summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@viroteck.net>2016-02-24 13:13:09 +0100
committerRobin Burchell <robin.burchell@viroteck.net>2016-03-02 21:24:54 +0000
commit76f6ceec36b33c55876ecd6691ff912a143b1899 (patch)
tree43d81984a1b5929abf24bfa84e568ff1722923e5 /mkspecs
parentafe3c30759d1bf9f52278d8dc40f85a93a1d963b (diff)
mkspecs: Add a benchmark "feature".
Testcases and benchmarks are rather different entities. You won't usually want to run benchmarks in the same environment you are wanting to run tests in, so this feature allows to differentiate between the two. We also add a "benchmark" make target (similar to check), which runs all configured benchmarks. Change-Id: I33759ce44c34e42a6a3a88f34e7b9c4372380721 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/benchmark.prf1
-rw-r--r--mkspecs/features/testcase.prf43
-rw-r--r--mkspecs/features/testcase_targets.prf10
3 files changed, 34 insertions, 20 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/testcase.prf b/mkspecs/features/testcase.prf
index 5ad372f976..0bf0ed7b94 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
+}
+