add qtCompileTest()
this fully replaces qtmodule-configtests. it is way shorter and it actually integrates reasonably with qmake. Change-Id: I819cc6807ad3661c419b54fa253894936dd88a64 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>bb10
parent
2d8dd9a6c9
commit
46ae5598e5
|
|
@ -0,0 +1,90 @@
|
|||
equals(MAKEFILE_GENERATOR, UNIX): \
|
||||
QMAKE_MAKE = make
|
||||
else:equals(MAKEFILE_GENERATOR, MINGW): \
|
||||
QMAKE_MAKE = mingw32-make
|
||||
else:if(equals(MAKEFILE_GENERATOR, MSVC.NET)|equals(MAKEFILE_GENERATOR, MSBUILD)): \
|
||||
QMAKE_MAKE = nmake
|
||||
else: \
|
||||
error("Configure tests are not supported with the $$MAKEFILE_GENERATOR Makefile generator.")
|
||||
|
||||
# Ensure that a cache is present. If none was found on startup, this will create
|
||||
# one in the build directory of the project which loads this feature.
|
||||
cache()
|
||||
|
||||
QMAKE_CONFIG_LOG = $$dirname(_QMAKE_CACHE_)/config.log
|
||||
QMAKE_CONFIG_TESTS_DIR = $$_PRO_FILE_PWD_/config.tests
|
||||
|
||||
defineTest(qtRunLoggedCommand) {
|
||||
msg = "+ $$1"
|
||||
write_file($$QMAKE_CONFIG_LOG, msg, append)
|
||||
system("$$1 >> \"$$QMAKE_CONFIG_LOG\" 2>&1")|return(false)
|
||||
return(true)
|
||||
}
|
||||
|
||||
# Try to build the test project in $$QMAKE_CONFIG_TESTS_DIR/$$1
|
||||
# ($$_PRO_FILE_PWD_/config.tests/$$1 by default).
|
||||
#
|
||||
# If the test passes, config_$$1 will be added to CONFIG.
|
||||
# The result is automatically cached. Use of cached results
|
||||
# can be suppressed by passing CONFIG+=recheck to qmake.
|
||||
#
|
||||
# Returns: true iff the test passes
|
||||
defineTest(qtCompileTest) {
|
||||
positive = config_$$1
|
||||
done = done_config_$$1
|
||||
|
||||
$$done:!recheck {
|
||||
$$positive:return(true)
|
||||
return(false)
|
||||
}
|
||||
|
||||
log("Checking for $${1}... ")
|
||||
msg = "executing config test $$1"
|
||||
write_file($$QMAKE_CONFIG_LOG, msg, append)
|
||||
|
||||
test_dir = $$QMAKE_CONFIG_TESTS_DIR/$$1
|
||||
test_out_dir = $$shadowed($$test_dir)
|
||||
test_cmd_base = "cd $$shell_quote($$native_path($$test_out_dir)) &&"
|
||||
|
||||
# Disable qmake features which are typically counterproductive for tests
|
||||
qmake_configs = "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\""
|
||||
|
||||
# Clean up after previous run
|
||||
exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean")
|
||||
|
||||
mkpath($$test_out_dir)|error("Aborting.")
|
||||
|
||||
qtRunLoggedCommand("$$test_cmd_base $$shell_quote($$native_path($$QMAKE_QMAKE)) $$qmake_configs $$shell_quote($$test_dir)") {
|
||||
qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE") {
|
||||
log("yes$$escape_expand(\\n)")
|
||||
msg = "test $$1 succeeded"
|
||||
write_file($$QMAKE_CONFIG_LOG, msg, append)
|
||||
|
||||
!$$positive {
|
||||
CONFIG += $$positive
|
||||
cache(CONFIG, add, positive)
|
||||
}
|
||||
!$$done {
|
||||
CONFIG += $$done
|
||||
cache(CONFIG, add, done)
|
||||
}
|
||||
export(CONFIG)
|
||||
return(true)
|
||||
}
|
||||
}
|
||||
|
||||
log("no$$escape_expand(\\n)")
|
||||
msg = "test $$1 FAILED"
|
||||
write_file($$QMAKE_CONFIG_LOG, msg, append)
|
||||
|
||||
$$positive {
|
||||
CONFIG -= $$positive
|
||||
cache(CONFIG, sub, positive)
|
||||
}
|
||||
!$$done {
|
||||
CONFIG += $$done
|
||||
cache(CONFIG, add, done)
|
||||
}
|
||||
export(CONFIG)
|
||||
return(false)
|
||||
}
|
||||
Loading…
Reference in New Issue