Merge topic 'dev/CMP0053-variable_watch'

9ba91463 tests: test CMP0053 in WARN mode when watching variables
This commit is contained in:
Brad King 2014-05-27 09:46:33 -04:00 committed by CMake Topic Stage
commit 4a67e9cd41
11 changed files with 46 additions and 1 deletions

View File

@ -103,6 +103,7 @@ cmMakefile::cmMakefile(): Internal(new Internals)
this->GeneratingBuildSystem = false;
this->NumLastMatches = 0;
this->SuppressWatches = false;
}
cmMakefile::cmMakefile(const cmMakefile& mf): Internal(new Internals)
@ -153,6 +154,7 @@ cmMakefile::cmMakefile(const cmMakefile& mf): Internal(new Internals)
this->OutputToSource = mf.OutputToSource;
this->NumLastMatches = mf.NumLastMatches;
this->SuppressWatches = mf.SuppressWatches;
}
//----------------------------------------------------------------------------
@ -2463,7 +2465,7 @@ const char* cmMakefile::GetDefinition(const std::string& name) const
}
#ifdef CMAKE_BUILD_WITH_CMAKE
cmVariableWatch* vv = this->GetVariableWatch();
if ( vv )
if ( vv && !this->SuppressWatches )
{
if ( def )
{
@ -2559,10 +2561,14 @@ const char *cmMakefile::ExpandVariablesInString(std::string& source,
original = source;
newResult = source;
compareResults = true;
// Suppress variable watches to avoid calling hooks twice. Suppress new
// dereferences since the OLD behavior is still what is actually used.
this->SuppressWatches = true;
newError =
ExpandVariablesInStringNew(newErrorstr, newResult, escapeQuotes,
noEscapes, atOnly, filename, line,
removeEmpty, replaceAt);
this->SuppressWatches = false;
}
case cmPolicies::OLD:
mtype = ExpandVariablesInStringOld(errorstr, source, escapeQuotes,

View File

@ -1127,6 +1127,8 @@ private:
const std::string& feature) const;
bool HaveCxxFeatureAvailable(cmTarget const* target,
const std::string& feature) const;
mutable bool SuppressWatches;
};
//----------------------------------------------------------------------------

View File

@ -0,0 +1,2 @@
^called
--><--$

View File

@ -0,0 +1,8 @@
cmake_policy(SET CMP0053 NEW)
function (watch_callback)
message("called")
endfunction ()
variable_watch(test watch_callback)
message("-->${test}<--")

View File

@ -0,0 +1,2 @@
^called
--><--$

View File

@ -0,0 +1,8 @@
cmake_policy(SET CMP0053 OLD)
function (watch_callback)
message("called")
endfunction ()
variable_watch(test watch_callback)
message("-->${test}<--")

View File

@ -0,0 +1,2 @@
^called
--><--$

View File

@ -0,0 +1,6 @@
function (watch_callback)
message("called")
endfunction ()
variable_watch(test watch_callback)
message("-->${test}<--")

View File

@ -0,0 +1,3 @@
cmake_minimum_required(VERSION 3.0)
project(${RunCMake_TEST} CXX)
include(${RunCMake_TEST}.cmake)

View File

@ -0,0 +1,5 @@
include(RunCMake)
run_cmake(CMP0053-OLD)
run_cmake(CMP0053-NEW)
run_cmake(CMP0053-WARN)

View File

@ -35,6 +35,7 @@ add_RunCMake_test(CMP0046)
add_RunCMake_test(CMP0049)
add_RunCMake_test(CMP0050)
add_RunCMake_test(CMP0051)
add_RunCMake_test(CMP0053)
add_RunCMake_test(CTest)
if(UNIX AND "${CMAKE_GENERATOR}" MATCHES "Unix Makefiles")
add_RunCMake_test(CompilerChange)