123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- equals(QMAKE_HOST.os, Windows) {
- SETENV_PFX = "set "
- SETENV_SFX = "&"
- } else {
- SETENV_PFX =
- SETENV_SFX =
- }
- QMAKE_MAKE = $$(MAKE)
- !isEmpty(QMAKE_MAKE) {
- # We were called recursively. Use the same make.
- } else:if(equals(MAKEFILE_GENERATOR, UNIX)|equals(MAKEFILE_GENERATOR, MINGW)) {
- !equals(QMAKE_HOST.os, Windows): \
- QMAKE_MAKE = make
- else: \
- 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.")
- }
- # Make sure we don't inherit MAKEFLAGS - -i in particular is fatal.
- QMAKE_MAKE = "$${SETENV_PFX}MAKEFLAGS=$$SETENV_SFX $$QMAKE_MAKE"
- # 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 $$system_quote($$system_path($$test_out_dir)) &&"
- # Disable qmake features which are typically counterproductive for tests
- qmake_configs = "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\""
- # On WinRT we need to change the entry point as we cannot create windows
- # applications
- winrt {
- qmake_configs += " \"QMAKE_LFLAGS+=/ENTRY:main\""
- }
- # Clean up after previous run
- exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS) distclean")
- mkpath($$test_out_dir)|error("Aborting.")
- !isEmpty (QMAKE_QTCONF): qtconfarg = -qtconf $$QMAKE_QTCONF
- qtRunLoggedCommand("$$test_cmd_base $$system_quote($$system_path($$QMAKE_QMAKE)) $$qtconfarg -spec $$QMAKESPEC $$qmake_configs $$shell_quote($$test_dir)") {
- qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS)") {
- 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)
- }
|