summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-03-22 07:24:57 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-03-22 07:28:42 +0100
commita02863234d76abb6c9f289026ae4ea3145924f30 (patch)
treeaef6381d0000a78ba69ac80eb03739b1c8ca5fc3 /mkspecs/features
parente77b13621f0057374d83a2b884f03dd2e5b7b88c (diff)
parente4d79e1fdeb6b26ba0b12b578daacf7cd672b960 (diff)
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts: configure mkspecs/common/wince/qplatformdefs.h src/plugins/platforms/directfb/qdirectfbbackingstore.cpp src/plugins/platforms/xcb/qxcbbackingstore.cpp Change-Id: Ied4d31264a9afca9514b51a7eb1494c28712793c
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/benchmark.prf1
-rw-r--r--mkspecs/features/default_post.prf13
-rw-r--r--mkspecs/features/java.prf2
-rw-r--r--mkspecs/features/qt.prf15
-rw-r--r--mkspecs/features/qt_build_config.prf7
-rw-r--r--mkspecs/features/qt_build_extra.prf40
-rw-r--r--mkspecs/features/qt_common.prf4
-rw-r--r--mkspecs/features/qt_functions.prf13
-rw-r--r--mkspecs/features/qt_module_pris.prf9
-rw-r--r--mkspecs/features/testcase.prf43
-rw-r--r--mkspecs/features/testcase_targets.prf10
11 files changed, 114 insertions, 43 deletions
diff --git a/mkspecs/features/benchmark.prf b/mkspecs/features/benchmark.prf
new file mode 100644
index 0000000000..bfae922700
--- /dev/null
+++ b/mkspecs/features/benchmark.prf
@@ -0,0 +1 @@
+load(testcase)
diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
index cd8d8859aa..e7e9a5bd87 100644
--- a/mkspecs/features/default_post.prf
+++ b/mkspecs/features/default_post.prf
@@ -96,9 +96,16 @@ breakpad {
}
c++11|c++14|c++1z {
- c++1z: cxxstd = CXX1Z
- else: c++14: cxxstd = CXX14
- else: cxxstd = CXX11
+ # Disable special compiler flags for host builds
+ !host_build|!cross_compile {
+ c++1z: cxxstd = CXX1Z
+ else: c++14: cxxstd = CXX14
+ else: cxxstd = CXX11
+ } else {
+ # Fall back to c++11, because since 5.7 c++11 is required everywhere,
+ # including host builds
+ cxxstd = CXX11
+ }
# Check if we should disable the GNU extensions or not
!strict_c++:!isEmpty(QMAKE_CXXFLAGS_GNU$$cxxstd): cxxstd = GNU$$cxxstd
diff --git a/mkspecs/features/java.prf b/mkspecs/features/java.prf
index 1b9754da8a..54dced2865 100644
--- a/mkspecs/features/java.prf
+++ b/mkspecs/features/java.prf
@@ -2,7 +2,7 @@ TEMPLATE = lib
android {
API_VERSION_TO_USE = $$(ANDROID_API_VERSION)
isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = $$API_VERSION
- isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = android-10
+ isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = android-16
ANDROID_JAR_FILE = $$ANDROID_SDK_ROOT/platforms/$$API_VERSION_TO_USE/android.jar
!exists($$ANDROID_JAR_FILE) {
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index 3258590d3b..873f914610 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -160,21 +160,8 @@ qt_module_deps = $$resolve_depends(qt_module_deps, "QT.")
contains(qt_module_deps, core) {
relative_qt_rpath:!isEmpty(QMAKE_REL_RPATH_BASE):contains(INSTALLS, target):\
isEmpty(target.files):isEmpty(target.commands):isEmpty(target.extra) {
- mac {
- if(equals(TEMPLATE, app):app_bundle)|\
- if(equals(TEMPLATE, lib):plugin:plugin_bundle) {
- ios: binpath = $$target.path/$${TARGET}.app
- else: binpath = $$target.path/$${TARGET}.app/Contents/MacOS
- } else: equals(TEMPLATE, lib):!plugin:lib_bundle {
- binpath = $$target.path/$${TARGET}.framework/Versions/Current
- } else {
- binpath = $$target.path
- }
- } else {
- binpath = $$target.path
- }
# NOT the /dev property, as INSTALLS use host paths
- QMAKE_RPATHDIR += $$relative_path($$[QT_INSTALL_LIBS], $$binpath)
+ QMAKE_RPATHDIR += $$relative_path($$[QT_INSTALL_LIBS], $$qtRelativeRPathBase())
} else {
QMAKE_RPATHDIR += $$[QT_INSTALL_LIBS/dev]
}
diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf
index 518fd93f04..2d437e7f91 100644
--- a/mkspecs/features/qt_build_config.prf
+++ b/mkspecs/features/qt_build_config.prf
@@ -52,6 +52,9 @@ QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR
unset(modpath)
}
+# Apply extra compiler flags passed via configure last.
+CONFIG = qt_build_extra $$CONFIG
+
# Don't actually try to install anything in non-prefix builds.
# This is much easier and safer than making every single INSTALLS
# assignment conditional.
@@ -72,6 +75,10 @@ CONFIG += \
# However, testcases should be still built with exceptions.
exceptions_off testcase_exceptions
+# Under Windows, this is neither necessary (transitive deps are automatically
+# resolved), nor functional (.res files end up in .prl files and break things).
+unix: CONFIG += explicitlib
+
defineTest(qtBuildPart) {
bp = $$eval($$upper($$section(_QMAKE_CONF_, /, -2, -2))_BUILD_PARTS)
diff --git a/mkspecs/features/qt_build_extra.prf b/mkspecs/features/qt_build_extra.prf
new file mode 100644
index 0000000000..378f5bbd7c
--- /dev/null
+++ b/mkspecs/features/qt_build_extra.prf
@@ -0,0 +1,40 @@
+#
+# W A R N I N G
+# -------------
+#
+# This file is not part of the Qt API. It exists purely as an
+# implementation detail. It may change from version to version
+# without notice, or even be removed.
+#
+# We mean it.
+#
+
+equals(TEMPLATE, subdirs): return()
+
+# It's likely that these extra flags will be wrong for host builds,
+# and the bootstrapped tools usually don't need them anyway.
+host_build:force_bootstrap: return()
+
+# The headersclean check needs defines and includes even for
+# header-only modules.
+DEFINES += $$EXTRA_DEFINES
+INCLUDEPATH += $$EXTRA_INCLUDEPATH
+
+# The other flags are relevant only for actual libraries.
+equals(TEMPLATE, aux): return()
+
+LIBS += $$EXTRA_LIBS
+
+# Static libs need no rpaths
+static: return()
+
+for (rp, EXTRA_RPATHS) {
+ absrp = $$absolute_path($$rp, $$[QT_INSTALL_LIBS])
+ !isEqual(absrp, $$rp) {
+ isEmpty(QMAKE_REL_RPATH_BASE)|!contains(INSTALLS, target): \
+ rp = $$absrp
+ else: \
+ rp = $$relative_path($$absrp, $$qtRelativeRPathBase())
+ }
+ QMAKE_RPATHDIR += $$rp
+}
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
index 07300842a0..c1c668aec8 100644
--- a/mkspecs/features/qt_common.prf
+++ b/mkspecs/features/qt_common.prf
@@ -84,9 +84,9 @@ warnings_are_errors:warning_clean {
QMAKE_CXXFLAGS_WARN_ON += -Werror -ww177,1224,1478,1881 $$WERROR
}
} else:gcc:!clang:!intel_icc {
- # GCC 4.6-4.9, 5.x
+ # GCC 4.6-4.9, 5.x, ...
ver = $${QT_GCC_MAJOR_VERSION}.$${QT_GCC_MINOR_VERSION}
- contains(ver, "(4\\.[6789]|5\\..)") {
+ contains(ver, "(4\\.[6789]|[5-9]\\..)") {
QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=cpp -Wno-error=deprecated-declarations $$WERROR
# GCC prints this bogus warning, after it has inlined a lot of code
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index 2756f90b01..9c3414c6fc 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -33,6 +33,19 @@ defineReplace(qt5LibraryTarget) {
return($$LIBRARY_NAME)
}
+defineReplace(qtRelativeRPathBase) {
+ darwin {
+ if(equals(TEMPLATE, app):app_bundle)|\
+ if(equals(TEMPLATE, lib):plugin:plugin_bundle) {
+ ios: return($$target.path/$${TARGET}.app)
+ return($$target.path/$${TARGET}.app/Contents/MacOS)
+ }
+ equals(TEMPLATE, lib):!plugin:lib_bundle: \
+ return($$target.path/$${TARGET}.framework/Versions/Current)
+ }
+ return($$target.path)
+}
+
defineTest(qtAddLibrary) {
warning("qtAddLibrary() is deprecated. Use QT+= instead.")
diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf
index 5f5639a1cf..9c45350543 100644
--- a/mkspecs/features/qt_module_pris.prf
+++ b/mkspecs/features/qt_module_pris.prf
@@ -10,7 +10,7 @@
#
load(qt_build_paths)
-force_independent|!isEmpty(MODULE_FWD_INCLUDES): \
+force_independent|split_incpath: \
CONFIG += need_fwd_pri
mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
need_fwd_pri: \
@@ -42,8 +42,11 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
module_libs = "\$\$QT_MODULE_HOST_LIB_BASE"
else: \
module_libs = "\$\$QT_MODULE_LIB_BASE"
- !isEmpty(QT_PRIVATE): \
- module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(QT_PRIVATE, -private$, _private)"
+ # In addition to the library's private deps, the private module's deps
+ # are logically runtime deps of the public module.
+ runtime_deps = $$QT_PRIVATE $$QT_FOR_PRIVATE
+ !isEmpty(runtime_deps): \
+ module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(runtime_deps, -private$, _private)"
else: \
module_rundep =
module_build_type = v2
diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf
index e6eace190e..08ed00715d 100644
--- a/mkspecs/features/testcase.prf
+++ b/mkspecs/features/testcase.prf
@@ -6,13 +6,16 @@ have_target {
# qt_build_config tells us to re-enable exceptions here.
testcase_exceptions: CONFIG += exceptions
-check.files =
-check.path = .
+benchmark: type = benchmark
+else: type = check
+
+$${type}.files =
+$${type}.path = .
# Add environment for non-installed builds. Do this first, so the
# 'make' variable expansions don't end up in a batch file/script.
QT_TOOL_NAME = target
-qtAddTargetEnv(check.commands, QT)
+qtAddTargetEnv($${type}.commands, QT)
# If the test ends up in a different directory, we should cd to that directory.
TESTRUN_CWD = $$DESTDIR
@@ -27,44 +30,44 @@ debug_and_release:debug_and_release_target {
}
# Allow for a custom test runner script
-check.commands += $(TESTRUNNER)
+$${type}.commands += $(TESTRUNNER)
unix {
isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = .
app_bundle: \
- check.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
+ $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
else: \
- check.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET)
+ $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET)
} else {
# Windows
!isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = $${TEST_TARGET_DIR}$${QMAKE_DIR_SEP}
- check.commands += $${TEST_TARGET_DIR}$(TARGET)
+ $${type}.commands += $${TEST_TARGET_DIR}$(TARGET)
}
# Allow for custom arguments to tests
-check.commands += $(TESTARGS)
+$${type}.commands += $(TESTARGS)
!isEmpty(TESTRUN_CWD):!contains(TESTRUN_CWD, ^\\./?): \
- check.commands = cd $$shell_path($$TESTRUN_CWD) && $$check.commands
+ $${type}.commands = cd $$shell_path($$TESTRUN_CWD) && $$eval($${type}.commands)
# If the test is marked as insignificant, discard the exit code
-insignificant_test:check.commands = -$${check.commands}
+insignificant_test: $${type}.commands = -$$eval($${type}.commands)
-QMAKE_EXTRA_TARGETS *= check
+QMAKE_EXTRA_TARGETS *= $${type}
isEmpty(BUILDS)|build_pass {
- check.depends = first
+ $${type}.depends = first
} else {
# For exclusive builds, only run the test once.
- check.CONFIG = recursive
- check.target = check_all
- check.recurse_target = check
- check.commands =
-
- check_first.depends = $$eval($$first(BUILDS).target)-check
- check_first.target = check
- QMAKE_EXTRA_TARGETS += check_first
+ $${type}.CONFIG = recursive
+ $${type}.target = $${type}_all
+ $${type}.recurse_target = $${type}
+ $${type}.commands =
+
+ $${type}_first.depends = $$eval($$first(BUILDS).target)-$${type}
+ $${type}_first.target = $${type}
+ QMAKE_EXTRA_TARGETS += $${type}_first
}
!no_testcase_installs:!contains(INSTALLS, target) {
diff --git a/mkspecs/features/testcase_targets.prf b/mkspecs/features/testcase_targets.prf
index e9b107735a..16ec6a9f0d 100644
--- a/mkspecs/features/testcase_targets.prf
+++ b/mkspecs/features/testcase_targets.prf
@@ -7,3 +7,13 @@
check.depends = first # `make check' implies build
QMAKE_EXTRA_TARGETS += check
}
+
+# ... and the same for benchmarks, too.
+!contains(QMAKE_EXTRA_TARGETS, benchmark) {
+ contains(TEMPLATE, subdirs): \
+ prepareRecursiveTarget(benchmark)
+ else: \
+ benchmark.depends = first # `make benchmark' implies build
+ QMAKE_EXTRA_TARGETS += benchmark
+}
+