summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/ExternalProject.cmake34
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/CTest/cmCTestP4.cxx61
-rw-r--r--Source/cmCacheManager.h6
-rw-r--r--Source/cmCustomCommand.cxx2
-rw-r--r--Source/cmCustomCommand.h2
-rw-r--r--Source/cmExtraEclipseCDT4Generator.cxx4
-rw-r--r--Source/cmFileCommand.cxx2
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx20
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx8
-rw-r--r--Source/cmLocalVisualStudio6Generator.cxx4
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx4
-rw-r--r--Source/cmMakefile.cxx105
-rw-r--r--Source/cmMakefile.h103
-rw-r--r--Source/cmSourceFile.cxx10
-rw-r--r--Source/cmSourceFileLocation.cxx6
-rw-r--r--Source/cmSourceFileLocation.h6
-rw-r--r--Source/cmSourceGroup.cxx8
-rw-r--r--Source/cmSourceGroup.h2
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx8
-rw-r--r--Tests/CMakeTests/CMakeLists.txt4
-rw-r--r--Tests/CMakeTests/FileDownloadBadHashTest.cmake.in10
-rw-r--r--Tests/CMakeTests/FileDownloadTest.cmake.in13
-rw-r--r--Tests/CTestUpdateCommon.cmake4
24 files changed, 246 insertions, 182 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 63f1180..1c1bd2f 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -585,13 +585,30 @@ message(STATUS \"downloading... done\")
endfunction()
-function(_ep_write_verifyfile_script script_filename local hash)
+function(_ep_write_verifyfile_script script_filename local hash retries download_script)
if("${hash}" MATCHES "${_ep_hash_regex}")
set(algo "${CMAKE_MATCH_1}")
string(TOLOWER "${CMAKE_MATCH_2}" expect_value)
set(script_content "set(expect_value \"${expect_value}\")
-file(${algo} \"\${file}\" actual_value)
-if(\"\${actual_value}\" STREQUAL \"\${expect_value}\")
+set(attempt 0)
+set(succeeded 0)
+while(\${attempt} LESS ${retries} OR \${attempt} EQUAL ${retries} AND NOT \${succeeded})
+ file(${algo} \"\${file}\" actual_value)
+ if(\"\${actual_value}\" STREQUAL \"\${expect_value}\")
+ set(succeeded 1)
+ elseif(\${attempt} LESS ${retries})
+ message(STATUS \"${algo} hash of \${file}
+does not match expected value
+ expected: \${expect_value}
+ actual: \${actual_value}
+Retrying download.
+\")
+ file(REMOVE \"\${file}\")
+ execute_process(COMMAND ${CMAKE_COMMAND} -P \"${download_script}\")
+ endif()
+endwhile()
+
+if(\${succeeded})
message(STATUS \"verifying file... done\")
else()
message(FATAL_ERROR \"error: ${algo} hash of
@@ -1394,6 +1411,8 @@ function(_ep_add_download_command name)
set(repository "external project URL")
set(module "${url}")
set(tag "${hash}")
+ set(retries 0)
+ set(download_script "")
configure_file(
"${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
"${stamp_dir}/${name}-urlinfo.txt"
@@ -1423,16 +1442,17 @@ function(_ep_add_download_command name)
get_property(timeout TARGET ${name} PROPERTY _EP_TIMEOUT)
get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY)
get_property(tls_cainfo TARGET ${name} PROPERTY _EP_TLS_CAINFO)
- _ep_write_downloadfile_script("${stamp_dir}/download-${name}.cmake"
- "${url}" "${file}" "${timeout}" "${hash}" "${tls_verify}" "${tls_cainfo}")
- set(cmd ${CMAKE_COMMAND} -P ${stamp_dir}/download-${name}.cmake
+ set(download_script "${stamp_dir}/download-${name}.cmake")
+ _ep_write_downloadfile_script("${download_script}" "${url}" "${file}" "${timeout}" "${hash}" "${tls_verify}" "${tls_cainfo}")
+ set(cmd ${CMAKE_COMMAND} -P "${download_script}"
COMMAND)
+ set(retries 3)
set(comment "Performing download step (download, verify and extract) for '${name}'")
else()
set(file "${url}")
set(comment "Performing download step (verify and extract) for '${name}'")
endif()
- _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${hash}")
+ _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${hash}" "${retries}" "${download_script}")
list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/verify-${name}.cmake
COMMAND)
_ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${name}" "${file}" "${source_dir}")
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 2294e58..301eff0 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -2,5 +2,5 @@
set(CMake_VERSION_MAJOR 2)
set(CMake_VERSION_MINOR 8)
set(CMake_VERSION_PATCH 12)
-set(CMake_VERSION_TWEAK 20140124)
+set(CMake_VERSION_TWEAK 20140127)
#set(CMake_VERSION_RC 1)
diff --git a/Source/CTest/cmCTestP4.cxx b/Source/CTest/cmCTestP4.cxx
index 0058721..b09d6f5 100644
--- a/Source/CTest/cmCTestP4.cxx
+++ b/Source/CTest/cmCTestP4.cxx
@@ -380,10 +380,16 @@ std::string cmCTestP4::GetWorkingRevision()
p4_identify.push_back(0);
std::string rev;
- IdentifyParser out(this, "rev-out> ", rev);
- OutputLogger err(this->Log, "rev-err> ");
+ IdentifyParser out(this, "p4_changes-out> ", rev);
+ OutputLogger err(this->Log, "p4_changes-err> ");
- RunChild(&p4_identify[0], &out, &err);
+ bool result = RunChild(&p4_identify[0], &out, &err);
+
+ // If there was a problem contacting the server return "<unknown>"
+ if(!result)
+ {
+ return "<unknown>";
+ }
if(rev.empty())
{
@@ -423,29 +429,24 @@ void cmCTestP4::LoadRevisions()
// Use 'p4 changes ...@old,new' to get a list of changelists
std::string range = this->SourceDirectory + "/...";
- if(this->OldRevision != "0")
+ // If any revision is unknown it means we couldn't contact the server.
+ // Do not process updates
+ if(this->OldRevision == "<unknown>" || this->NewRevision == "<unknown>")
{
- range.append("@").append(this->OldRevision);
+ cmCTestLog(this->CTest, HANDLER_OUTPUT, " At least one of the revisions "
+ << "is unknown. No repository changes will be reported.\n");
+ return;
}
- if(this->NewRevision != "0")
- {
- if(this->OldRevision != "0")
- {
- range.append(",").append(this->NewRevision);
- }
- else
- {
- range.append("@").append(this->NewRevision);
- }
- }
+ range.append("@").append(this->OldRevision)
+ .append(",").append(this->NewRevision);
p4_changes.push_back("changes");
p4_changes.push_back(range.c_str());
p4_changes.push_back(0);
- ChangesParser out(this, "changes-out> ");
- OutputLogger err(this->Log, "changes-err> ");
+ ChangesParser out(this, "p4_changes-out> ");
+ OutputLogger err(this->Log, "p4_changes-err> ");
ChangeLists.clear();
this->RunChild(&p4_changes[0], &out, &err);
@@ -464,8 +465,8 @@ void cmCTestP4::LoadRevisions()
p4_describe.push_back(i->c_str());
p4_describe.push_back(0);
- DescribeParser outDescribe(this, "describe-out> ");
- OutputLogger errDescribe(this->Log, "describe-err> ");
+ DescribeParser outDescribe(this, "p4_describe-out> ");
+ OutputLogger errDescribe(this->Log, "p4_describe-err> ");
this->RunChild(&p4_describe[0], &outDescribe, &errDescribe);
}
}
@@ -484,8 +485,8 @@ void cmCTestP4::LoadModifications()
p4_diff.push_back(source.c_str());
p4_diff.push_back(0);
- DiffParser out(this, "diff-out> ");
- OutputLogger err(this->Log, "diff-err> ");
+ DiffParser out(this, "p4_diff-out> ");
+ OutputLogger err(this->Log, "p4_diff-err> ");
this->RunChild(&p4_diff[0], &out, &err);
}
@@ -503,8 +504,8 @@ bool cmCTestP4::UpdateCustom(const std::string& custom)
}
p4_custom.push_back(0);
- OutputLogger custom_out(this->Log, "custom-out> ");
- OutputLogger custom_err(this->Log, "custom-err> ");
+ OutputLogger custom_out(this->Log, "p4_customsync-out> ");
+ OutputLogger custom_err(this->Log, "p4_customsync-err> ");
return this->RunUpdateCommand(&p4_custom[0], &custom_out, &custom_err);
}
@@ -518,6 +519,14 @@ bool cmCTestP4::UpdateImpl()
return this->UpdateCustom(custom);
}
+ // If we couldn't get a revision number before updating, abort.
+ if(this->OldRevision == "<unknown>")
+ {
+ this->UpdateCommandLine = "Unknown current revision";
+ cmCTestLog(this->CTest, ERROR_MESSAGE, " Unknown current revision\n");
+ return false;
+ }
+
std::vector<char const*> p4_sync;
SetP4Options(p4_sync);
@@ -552,8 +561,8 @@ bool cmCTestP4::UpdateImpl()
p4_sync.push_back(source.c_str());
p4_sync.push_back(0);
- OutputLogger out(this->Log, "sync-out> ");
- OutputLogger err(this->Log, "sync-err> ");
+ OutputLogger out(this->Log, "p4_sync-out> ");
+ OutputLogger err(this->Log, "p4_sync-err> ");
return this->RunUpdateCommand(&p4_sync[0], &out, &err);
}
diff --git a/Source/cmCacheManager.h b/Source/cmCacheManager.h
index 4b8c07d..f487e8e 100644
--- a/Source/cmCacheManager.h
+++ b/Source/cmCacheManager.h
@@ -145,8 +145,10 @@ public:
const char* GetCacheValue(const char* key) const;
/** Get the version of CMake that wrote the cache. */
- unsigned int GetCacheMajorVersion() { return this->CacheMajorVersion; }
- unsigned int GetCacheMinorVersion() { return this->CacheMinorVersion; }
+ unsigned int GetCacheMajorVersion() const
+ { return this->CacheMajorVersion; }
+ unsigned int GetCacheMinorVersion() const
+ { return this->CacheMinorVersion; }
bool NeedCacheCompatibility(int major, int minor);
protected:
diff --git a/Source/cmCustomCommand.cxx b/Source/cmCustomCommand.cxx
index 3620a38..b672148 100644
--- a/Source/cmCustomCommand.cxx
+++ b/Source/cmCustomCommand.cxx
@@ -64,7 +64,7 @@ cmCustomCommand& cmCustomCommand::operator=(cmCustomCommand const& r)
}
//----------------------------------------------------------------------------
-cmCustomCommand::cmCustomCommand(cmMakefile* mf,
+cmCustomCommand::cmCustomCommand(cmMakefile const* mf,
const std::vector<std::string>& outputs,
const std::vector<std::string>& depends,
const cmCustomCommandLines& commandLines,
diff --git a/Source/cmCustomCommand.h b/Source/cmCustomCommand.h
index e20d2bf..6851105 100644
--- a/Source/cmCustomCommand.h
+++ b/Source/cmCustomCommand.h
@@ -30,7 +30,7 @@ public:
cmCustomCommand& operator=(cmCustomCommand const& r);
/** Main constructor specifies all information for the command. */
- cmCustomCommand(cmMakefile* mf,
+ cmCustomCommand(cmMakefile const* mf,
const std::vector<std::string>& outputs,
const std::vector<std::string>& depends,
const cmCustomCommandLines& commandLines,
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx
index 3e9b786..33e76cd 100644
--- a/Source/cmExtraEclipseCDT4Generator.cxx
+++ b/Source/cmExtraEclipseCDT4Generator.cxx
@@ -567,9 +567,9 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
{
// Add the file to the list of sources.
std::string source = (*sfIt)->GetFullPath();
- cmSourceGroup& sourceGroup =
+ cmSourceGroup* sourceGroup =
makefile->FindSourceGroup(source.c_str(), sourceGroups);
- sourceGroup.AssignSource(*sfIt);
+ sourceGroup->AssignSource(*sfIt);
}
for(std::vector<cmSourceGroup>::iterator sgIt = sourceGroups.begin();
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 311763b..e79bc6c 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -2983,6 +2983,8 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
<< " for file: [" << file << "]" << std::endl
<< " expected hash: [" << expectedHash << "]" << std::endl
<< " actual hash: [" << actualHash << "]" << std::endl
+ << " status: [" << (int)res << ";\""
+ << ::curl_easy_strerror(res) << "\"]" << std::endl
;
this->SetError(oss.str().c_str());
return false;
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 5e1f1ed..731bc00 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -1110,16 +1110,24 @@ void cmGlobalNinjaGenerator::WriteTargetRebuildManifest(std::ostream& os)
/*restat=*/ false,
/*generator=*/ true);
+ cmLocalNinjaGenerator *ng = static_cast<cmLocalNinjaGenerator *>(lg);
+
cmNinjaDeps implicitDeps;
- for (std::vector<cmLocalGenerator *>::const_iterator i =
- this->LocalGenerators.begin(); i != this->LocalGenerators.end(); ++i) {
- const std::vector<std::string>& lf = (*i)->GetMakefile()->GetListFiles();
- implicitDeps.insert(implicitDeps.end(), lf.begin(), lf.end());
- }
+ for(std::vector<cmLocalGenerator*>::const_iterator i =
+ this->LocalGenerators.begin(); i != this->LocalGenerators.end(); ++i)
+ {
+ std::vector<std::string> const& lf = (*i)->GetMakefile()->GetListFiles();
+ for(std::vector<std::string>::const_iterator fi = lf.begin();
+ fi != lf.end(); ++fi)
+ {
+ implicitDeps.push_back(ng->ConvertToNinjaPath(fi->c_str()));
+ }
+ }
+ implicitDeps.push_back("CMakeCache.txt");
+
std::sort(implicitDeps.begin(), implicitDeps.end());
implicitDeps.erase(std::unique(implicitDeps.begin(), implicitDeps.end()),
implicitDeps.end());
- implicitDeps.push_back("CMakeCache.txt");
this->WriteBuild(os,
"Re-run CMake if any of its inputs changed.",
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 41961ed..46c34d0 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -2960,10 +2960,10 @@ void cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
cmSourceFile* sf = *s;
// Add the file to the list of sources.
std::string const& source = sf->GetFullPath();
- cmSourceGroup& sourceGroup =
+ cmSourceGroup* sourceGroup =
mf->FindSourceGroup(source.c_str(), sourceGroups);
cmXCodeObject* pbxgroup =
- this->CreateOrGetPBXGroup(cmtarget, &sourceGroup);
+ this->CreateOrGetPBXGroup(cmtarget, sourceGroup);
cmStdString key = GetGroupMapKey(cmtarget, sf);
this->GroupMap[key] = pbxgroup;
}
@@ -2975,10 +2975,10 @@ void cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
oi = objs.begin(); oi != objs.end(); ++oi)
{
std::string const& source = *oi;
- cmSourceGroup& sourceGroup =
+ cmSourceGroup* sourceGroup =
mf->FindSourceGroup(source.c_str(), sourceGroups);
cmXCodeObject* pbxgroup =
- this->CreateOrGetPBXGroup(cmtarget, &sourceGroup);
+ this->CreateOrGetPBXGroup(cmtarget, sourceGroup);
cmStdString key = GetGroupMapKeyFromPath(cmtarget, source);
this->GroupMap[key] = pbxgroup;
}
diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx
index fb12521..a5e8294 100644
--- a/Source/cmLocalVisualStudio6Generator.cxx
+++ b/Source/cmLocalVisualStudio6Generator.cxx
@@ -324,9 +324,9 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
{
// Add the file to the list of sources.
std::string source = (*i)->GetFullPath();
- cmSourceGroup& sourceGroup =
+ cmSourceGroup* sourceGroup =
this->Makefile->FindSourceGroup(source.c_str(), sourceGroups);
- sourceGroup.AssignSource(*i);
+ sourceGroup->AssignSource(*i);
// while we are at it, if it is a .rule file then for visual studio 6 we
// must generate it
if ((*i)->GetPropertyAsBool("__CMAKE_RULE"))
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index 57a4880..212b06b 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -1392,9 +1392,9 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
{
this->ModuleDefinitionFile = (*i)->GetFullPath();
}
- cmSourceGroup& sourceGroup =
+ cmSourceGroup* sourceGroup =
this->Makefile->FindSourceGroup(source.c_str(), sourceGroups);
- sourceGroup.AssignSource(*i);
+ sourceGroup->AssignSource(*i);
}
// open the project
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 856462e..55a9d5c 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -169,17 +169,17 @@ void cmMakefile::Initialize()
this->CheckCMP0000 = false;
}
-unsigned int cmMakefile::GetCacheMajorVersion()
+unsigned int cmMakefile::GetCacheMajorVersion() const
{
return this->GetCacheManager()->GetCacheMajorVersion();
}
-unsigned int cmMakefile::GetCacheMinorVersion()
+unsigned int cmMakefile::GetCacheMinorVersion() const
{
return this->GetCacheManager()->GetCacheMinorVersion();
}
-bool cmMakefile::NeedCacheCompatibility(int major, int minor)
+bool cmMakefile::NeedCacheCompatibility(int major, int minor) const
{
return this->GetCacheManager()->NeedCacheCompatibility(major, minor);
}
@@ -260,7 +260,7 @@ void cmMakefile
// call print on all the classes in the makefile
-void cmMakefile::Print()
+void cmMakefile::Print() const
{
// print the class lists
std::cout << "classes:\n";
@@ -359,7 +359,7 @@ bool cmMakefile::GetBacktrace(cmListFileBacktrace& backtrace) const
}
//----------------------------------------------------------------------------
-void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff)
+void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const
{
cmOStringStream msg;
msg << lff.FilePath << "(" << lff.Line << "): ";
@@ -734,7 +734,7 @@ bool cmMakefile::ReadListFile(const char* filename_in,
}
//----------------------------------------------------------------------------
-void cmMakefile::EnforceDirectoryLevelRules()
+void cmMakefile::EnforceDirectoryLevelRules() const
{
// Diagnose a violation of CMP0000 if necessary.
if(this->CheckCMP0000)
@@ -884,7 +884,7 @@ cmMakefile::AddCustomCommandToTarget(const char* target,
cmTarget::CustomCommandType type,
const char* comment,
const char* workingDir,
- bool escapeOldStyle)
+ bool escapeOldStyle) const
{
// Find the target to which to add the custom command.
cmTargets::iterator ti = this->Targets.find(target);
@@ -2058,7 +2058,8 @@ cmMakefile::AddNewTarget(cmTarget::TargetType type, const char* name)
return &it->second;
}
-cmSourceFile *cmMakefile::LinearGetSourceFileWithOutput(const char *cname)
+cmSourceFile*
+cmMakefile::LinearGetSourceFileWithOutput(const char *cname) const
{
std::string name = cname;
std::string out;
@@ -2094,7 +2095,7 @@ cmSourceFile *cmMakefile::LinearGetSourceFileWithOutput(const char *cname)
return 0;
}
-cmSourceFile *cmMakefile::GetSourceFileWithOutput(const char *cname)
+cmSourceFile *cmMakefile::GetSourceFileWithOutput(const char *cname) const
{
std::string name = cname;
@@ -2105,7 +2106,7 @@ cmSourceFile *cmMakefile::GetSourceFileWithOutput(const char *cname)
return LinearGetSourceFileWithOutput(cname);
}
// Otherwise we use an efficient lookup map.
- OutputToSourceMap::iterator o = this->OutputToSource.find(name);
+ OutputToSourceMap::const_iterator o = this->OutputToSource.find(name);
if (o != this->OutputToSource.end())
{
return (*o).second;
@@ -2114,19 +2115,20 @@ cmSourceFile *cmMakefile::GetSourceFileWithOutput(const char *cname)
}
#if defined(CMAKE_BUILD_WITH_CMAKE)
-cmSourceGroup* cmMakefile::GetSourceGroup(const std::vector<std::string>&name)
+cmSourceGroup*
+cmMakefile::GetSourceGroup(const std::vector<std::string>&name) const
{
cmSourceGroup* sg = 0;
// first look for source group starting with the same as the one we wants
- for (std::vector<cmSourceGroup>::iterator sgIt = this->SourceGroups.begin();
- sgIt != this->SourceGroups.end(); ++sgIt)
-
+ for (std::vector<cmSourceGroup>::const_iterator
+ sgIt = this->SourceGroups.begin();
+ sgIt != this->SourceGroups.end(); ++sgIt)
{
std::string sgName = sgIt->GetName();
if(sgName == name[0])
{
- sg = &(*sgIt);
+ sg = const_cast<cmSourceGroup*>(&(*sgIt));
break;
}
}
@@ -2136,7 +2138,7 @@ cmSourceGroup* cmMakefile::GetSourceGroup(const std::vector<std::string>&name)
// iterate through its children to find match source group
for(unsigned int i=1; i<name.size(); ++i)
{
- sg = sg->lookupChild(name[i].c_str());
+ sg = sg->LookupChild(name[i].c_str());
if(sg == 0)
{
break;
@@ -2207,7 +2209,7 @@ void cmMakefile::AddSourceGroup(const std::vector<std::string>& name,
for(++i; i<=lastElement; ++i)
{
sg->AddChild(cmSourceGroup(name[i].c_str(), 0, sg->GetFullName()));
- sg = sg->lookupChild(name[i].c_str());
+ sg = sg->LookupChild(name[i].c_str());
fullname = sg->GetFullName();
if(strlen(fullname))
{
@@ -2375,7 +2377,7 @@ const char* cmMakefile::GetSONameFlag(const char* language) const
return GetDefinition(name.c_str());
}
-bool cmMakefile::CanIWriteThisFile(const char* fileName)
+bool cmMakefile::CanIWriteThisFile(const char* fileName) const
{
if ( !this->IsOn("CMAKE_DISABLE_SOURCE_CHANGES") )
{
@@ -2517,7 +2519,7 @@ std::vector<std::string> cmMakefile
}
-const char *cmMakefile::ExpandVariablesInString(std::string& source)
+const char *cmMakefile::ExpandVariablesInString(std::string& source) const
{
return this->ExpandVariablesInString(source, false, false);
}
@@ -2529,7 +2531,7 @@ const char *cmMakefile::ExpandVariablesInString(std::string& source,
const char* filename,
long line,
bool removeEmpty,
- bool replaceAt)
+ bool replaceAt) const
{
if ( source.empty() || source.find_first_of("$@\\") == source.npos)
{
@@ -2773,9 +2775,9 @@ cmMakefile::GetConfigurations(std::vector<std::string>& configs,
* non-inherited SOURCE_GROUP commands will have precedence over
* inherited ones.
*/
-cmSourceGroup&
+cmSourceGroup*
cmMakefile::FindSourceGroup(const char* source,
- std::vector<cmSourceGroup> &groups)
+ std::vector<cmSourceGroup> &groups) const
{
// First search for a group that lists the file explicitly.
for(std::vector<cmSourceGroup>::reverse_iterator sg = groups.rbegin();
@@ -2784,7 +2786,7 @@ cmMakefile::FindSourceGroup(const char* source,
cmSourceGroup *result = sg->MatchChildrenFiles(source);
if(result)
{
- return *result;
+ return result;
}
}
@@ -2795,13 +2797,13 @@ cmMakefile::FindSourceGroup(const char* source,
cmSourceGroup *result = sg->MatchChildrenRegex(source);
if(result)
{
- return *result;
+ return result;
}
}
// Shouldn't get here, but just in case, return the default group.
- return groups.front();
+ return &groups.front();
}
#endif
@@ -2864,7 +2866,7 @@ void cmMakefile::PopFunctionBlockerBarrier(bool reportError)
bool cmMakefile::ExpandArguments(
std::vector<cmListFileArgument> const& inArgs,
- std::vector<std::string>& outArgs)
+ std::vector<std::string>& outArgs) const
{
std::vector<cmListFileArgument>::const_iterator i;
std::string value;
@@ -3008,7 +3010,7 @@ void cmMakefile::SetArgcArgv(const std::vector<std::string>& args)
}
//----------------------------------------------------------------------------
-cmSourceFile* cmMakefile::GetSource(const char* sourceName)
+cmSourceFile* cmMakefile::GetSource(const char* sourceName) const
{
cmSourceFileLocation sfl(this, sourceName);
for(std::vector<cmSourceFile*>::const_iterator
@@ -3056,7 +3058,7 @@ void cmMakefile::EnableLanguage(std::vector<std::string> const & lang,
void cmMakefile::ExpandSourceListArguments(
std::vector<std::string> const& arguments,
- std::vector<std::string>& newargs, unsigned int /* start */)
+ std::vector<std::string>& newargs, unsigned int /* start */) const
{
// now expand the args
unsigned int i;
@@ -3235,9 +3237,9 @@ void cmMakefile::AddMacro(const char* name, const char* signature)
this->MacrosMap[name] = signature;
}
-void cmMakefile::GetListOfMacros(std::string& macros)
+void cmMakefile::GetListOfMacros(std::string& macros) const
{
- StringStringMap::iterator it;
+ StringStringMap::const_iterator it;
macros = "";
int cc = 0;
for ( it = this->MacrosMap.begin(); it != this->MacrosMap.end(); ++it )
@@ -3256,7 +3258,7 @@ cmCacheManager *cmMakefile::GetCacheManager() const
return this->GetCMakeInstance()->GetCacheManager();
}
-void cmMakefile::DisplayStatus(const char* message, float s)
+void cmMakefile::DisplayStatus(const char* message, float s) const
{
cmake* cm = this->GetLocalGenerator()->GetGlobalGenerator()
->GetCMakeInstance();
@@ -3269,7 +3271,7 @@ void cmMakefile::DisplayStatus(const char* message, float s)
cm->UpdateProgress(message, s);
}
-std::string cmMakefile::GetModulesFile(const char* filename)
+std::string cmMakefile::GetModulesFile(const char* filename) const
{
std::string result;
@@ -3369,7 +3371,7 @@ std::string cmMakefile::GetModulesFile(const char* filename)
void cmMakefile::ConfigureString(const std::string& input,
std::string& output, bool atOnly,
- bool escapeQuotes)
+ bool escapeQuotes) const
{
// Split input to handle one line at a time.
std::string::const_iterator lineStart = input.begin();
@@ -3673,7 +3675,7 @@ void cmMakefile::AppendProperty(const char* prop, const char* value,
this->Properties.AppendProperty(prop,value,cmProperty::DIRECTORY,asString);
}
-const char *cmMakefile::GetPropertyOrDefinition(const char* prop)
+const char *cmMakefile::GetPropertyOrDefinition(const char* prop) const
{
const char *ret = this->GetProperty(prop, cmProperty::DIRECTORY);
if (!ret)
@@ -3683,13 +3685,13 @@ const char *cmMakefile::GetPropertyOrDefinition(const char* prop)
return ret;
}
-const char *cmMakefile::GetProperty(const char* prop)
+const char *cmMakefile::GetProperty(const char* prop) const
{
return this->GetProperty(prop, cmProperty::DIRECTORY);
}
const char *cmMakefile::GetProperty(const char* prop,
- cmProperty::ScopeType scope)
+ cmProperty::ScopeType scope) const
{
if(!prop)
{
@@ -3713,8 +3715,9 @@ const char *cmMakefile::GetProperty(const char* prop,
}
else if (!strcmp("LISTFILE_STACK",prop))
{
- for (std::deque<cmStdString>::iterator i = this->ListFileStack.begin();
- i != this->ListFileStack.end(); ++i)
+ for (std::deque<cmStdString>::const_iterator
+ i = this->ListFileStack.begin();
+ i != this->ListFileStack.end(); ++i)
{
if (i != this->ListFileStack.begin())
{
@@ -3828,7 +3831,7 @@ const char *cmMakefile::GetProperty(const char* prop,
return retVal;
}
-bool cmMakefile::GetPropertyAsBool(const char* prop)
+bool cmMakefile::GetPropertyAsBool(const char* prop) const
{
return cmSystemTools::IsOn(this->GetProperty(prop));
}
@@ -3937,13 +3940,13 @@ void cmMakefile::AddCMakeDependFilesFromUser()
}
}
-std::string cmMakefile::GetListFileStack()
+std::string cmMakefile::GetListFileStack() const
{
cmOStringStream tmp;
size_t depth = this->ListFileStack.size();
if (depth > 0)
{
- std::deque<cmStdString>::iterator it = this->ListFileStack.end();
+ std::deque<cmStdString>::const_iterator it = this->ListFileStack.end();
do
{
if (depth != this->ListFileStack.size())
@@ -4089,7 +4092,7 @@ cmMakefile::AddImportedTarget(const char* name, cmTarget::TargetType type,
//----------------------------------------------------------------------------
cmTarget* cmMakefile::FindTargetToUse(const std::string& name,
- bool excludeAliases)
+ bool excludeAliases) const
{
// Look for an imported target. These take priority because they
// are more local in scope and do not have to be globally unique.
@@ -4113,7 +4116,7 @@ cmTarget* cmMakefile::FindTargetToUse(const std::string& name,
}
//----------------------------------------------------------------------------
-bool cmMakefile::IsAlias(const std::string& name)
+bool cmMakefile::IsAlias(const std::string& name) const
{
if (this->AliasTargets.find(name) != this->AliasTargets.end())
return true;
@@ -4122,7 +4125,8 @@ bool cmMakefile::IsAlias(const std::string& name)
}
//----------------------------------------------------------------------------
-cmGeneratorTarget* cmMakefile::FindGeneratorTargetToUse(const char* name)
+cmGeneratorTarget*
+cmMakefile::FindGeneratorTargetToUse(const char* name) const
{
if (cmTarget *t = this->FindTargetToUse(name))
{
@@ -4133,7 +4137,7 @@ cmGeneratorTarget* cmMakefile::FindGeneratorTargetToUse(const char* name)
//----------------------------------------------------------------------------
bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg,
- bool isCustom)
+ bool isCustom) const
{
if(this->IsAlias(name))
{
@@ -4224,7 +4228,8 @@ bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg,
}
//----------------------------------------------------------------------------
-bool cmMakefile::EnforceUniqueDir(const char* srcPath, const char* binPath)
+bool cmMakefile::EnforceUniqueDir(const char* srcPath,
+ const char* binPath) const
{
// Make sure the binary directory is unique.
cmGlobalGenerator* gg = this->LocalGenerator->GetGlobalGenerator();
@@ -4285,7 +4290,7 @@ std::vector<cmSourceFile*> cmMakefile::GetQtUiFilesWithOptions() const
//----------------------------------------------------------------------------
cmPolicies::PolicyStatus
-cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id)
+cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const
{
// Get the current setting of the policy.
cmPolicies::PolicyStatus cur = this->GetPolicyStatusInternal(id);
@@ -4313,10 +4318,10 @@ cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id)
//----------------------------------------------------------------------------
cmPolicies::PolicyStatus
-cmMakefile::GetPolicyStatusInternal(cmPolicies::PolicyID id)
+cmMakefile::GetPolicyStatusInternal(cmPolicies::PolicyID id) const
{
// Is the policy set in our stack?
- for(PolicyStackType::reverse_iterator psi = this->PolicyStack.rbegin();
+ for(PolicyStackType::const_reverse_iterator psi = this->PolicyStack.rbegin();
psi != this->PolicyStack.rend(); ++psi)
{
PolicyStackEntry::const_iterator pse = psi->find(id);
@@ -4466,7 +4471,7 @@ bool cmMakefile::SetPolicyVersion(const char *version)
ApplyPolicyVersion(this,version);
}
-cmPolicies *cmMakefile::GetPolicies()
+cmPolicies *cmMakefile::GetPolicies() const
{
if (!this->GetCMakeInstance())
{
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index dadf7ff..66a33bb 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -63,8 +63,8 @@ public:
* was used to write the currently loaded cache, note
* this method will not work before the cache is loaded.
*/
- unsigned int GetCacheMajorVersion();
- unsigned int GetCacheMinorVersion();
+ unsigned int GetCacheMajorVersion() const;
+ unsigned int GetCacheMinorVersion() const;
/* Check for unused variables in this scope */
void CheckForUnusedVariables() const;
@@ -76,7 +76,7 @@ public:
bool VariableUsed(const char* ) const;
/** Return whether compatibility features needed for a version of
the cache or lower should be enabled. */
- bool NeedCacheCompatibility(int major, int minor);
+ bool NeedCacheCompatibility(int major, int minor) const;
/**
* Construct an empty makefile.
@@ -142,14 +142,14 @@ public:
void SetLocalGenerator(cmLocalGenerator*);
///! Get the current makefile generator.
- cmLocalGenerator* GetLocalGenerator()
+ cmLocalGenerator* GetLocalGenerator() const
{ return this->LocalGenerator;}
/**
* Help enforce global target name uniqueness.
*/
bool EnforceUniqueName(std::string const& name, std::string& msg,
- bool isCustom = false);
+ bool isCustom = false) const;
/**
* Perform FinalPass, Library dependency analysis etc before output of the
@@ -165,7 +165,7 @@ public:
/**
* Print the object state to std::cout.
*/
- void Print();
+ void Print() const;
/** Add a custom command to the build. */
void AddCustomCommandToTarget(const char* target,
@@ -173,7 +173,7 @@ public:
const cmCustomCommandLines& commandLines,
cmTarget::CustomCommandType type,
const char* comment, const char* workingDir,
- bool escapeOldStyle = true);
+ bool escapeOldStyle = true) const;
cmSourceFile* AddCustomCommandToOutput(
const std::vector<std::string>& outputs,
const std::vector<std::string>& depends,
@@ -250,13 +250,6 @@ public:
*/
void AddLinkDirectory(const char*);
- /**
- * Get the list of link directories
- */
- std::vector<std::string>& GetLinkDirectories()
- {
- return this->LinkDirectories;
- }
const std::vector<std::string>& GetLinkDirectories() const
{
return this->LinkDirectories;
@@ -356,7 +349,7 @@ public:
*/
bool SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
bool SetPolicy(const char *id, cmPolicies::PolicyStatus status);
- cmPolicies::PolicyStatus GetPolicyStatus(cmPolicies::PolicyID id);
+ cmPolicies::PolicyStatus GetPolicyStatus(cmPolicies::PolicyID id) const;
bool SetPolicyVersion(const char *version);
void RecordPolicies(cmPolicies::PolicyMap& pm);
//@}
@@ -379,7 +372,7 @@ public:
/**
* Get the Policies Instance
*/
- cmPolicies *GetPolicies();
+ cmPolicies *GetPolicies() const;
/**
* Add an auxiliary directory to the build.
@@ -492,7 +485,7 @@ public:
{
this->IncludeFileRegularExpression = regex;
}
- const char* GetIncludeRegularExpression()
+ const char* GetIncludeRegularExpression() const
{
return this->IncludeFileRegularExpression.c_str();
}
@@ -505,7 +498,7 @@ public:
{
this->ComplainFileRegularExpression = regex;
}
- const char* GetComplainRegularExpression()
+ const char* GetComplainRegularExpression() const
{
return this->ComplainFileRegularExpression.c_str();
}
@@ -539,15 +532,14 @@ public:
/** Find a target to use in place of the given name. The target
returned may be imported or built within the project. */
cmTarget* FindTargetToUse(const std::string& name,
- bool excludeAliases = false);
- bool IsAlias(const std::string& name);
- cmGeneratorTarget* FindGeneratorTargetToUse(const char* name);
+ bool excludeAliases = false) const;
+ bool IsAlias(const std::string& name) const;
+ cmGeneratorTarget* FindGeneratorTargetToUse(const char* name) const;
/**
* Mark include directories as system directories.
*/
void AddSystemIncludeDirectories(const std::set<cmStdString> &incs);
- bool IsSystemIncludeDirectory(const char* dir, const char *config);
/** Expand out any arguements in the vector that have ; separated
* strings into multiple arguements. A new vector is created
@@ -558,12 +550,12 @@ public:
*/
void ExpandSourceListArguments(std::vector<std::string> const& argsIn,
std::vector<std::string>& argsOut,
- unsigned int startArgumentIndex);
+ unsigned int startArgumentIndex) const;
/** Get a cmSourceFile pointer for a given source name, if the name is
* not found, then a null pointer is returned.
*/
- cmSourceFile* GetSource(const char* sourceName);
+ cmSourceFile* GetSource(const char* sourceName) const;
/** Get a cmSourceFile pointer for a given source name, if the name is
* not found, then create the source file and return it. generated
@@ -576,7 +568,7 @@ public:
/**
* Obtain a list of auxiliary source directories.
*/
- std::vector<std::string>& GetAuxSourceDirectories()
+ const std::vector<std::string>& GetAuxSourceDirectories() const
{return this->AuxSourceDirectories;}
//@{
@@ -621,13 +613,13 @@ public:
/**
* Get a list of preprocessor define flags.
*/
- const char* GetDefineFlags()
+ const char* GetDefineFlags() const
{return this->DefineFlags.c_str();}
/**
* Make sure CMake can write this file
*/
- bool CanIWriteThisFile(const char* fileName);
+ bool CanIWriteThisFile(const char* fileName) const;
#if defined(CMAKE_BUILD_WITH_CMAKE)
/**
@@ -639,7 +631,7 @@ public:
/**
* Get the source group
*/
- cmSourceGroup* GetSourceGroup(const std::vector<std::string>&name);
+ cmSourceGroup* GetSourceGroup(const std::vector<std::string>&name) const;
#endif
/**
@@ -652,10 +644,7 @@ public:
{ this->ListFiles.push_back(file);}
void AddCMakeDependFilesFromUser();
- /**
- * Get the list file stack as a string
- */
- std::string GetListFileStack();
+ std::string GetListFileStack() const;
/**
* Get the current context backtrace.
@@ -677,14 +666,14 @@ public:
* entry in the this->Definitions map. Also \@var\@ is
* expanded to match autoconf style expansions.
*/
- const char *ExpandVariablesInString(std::string& source);
+ const char *ExpandVariablesInString(std::string& source) const;
const char *ExpandVariablesInString(std::string& source, bool escapeQuotes,
bool noEscapes,
bool atOnly = false,
const char* filename = 0,
long line = -1,
bool removeEmpty = false,
- bool replaceAt = true);
+ bool replaceAt = true) const;
/**
* Remove any remaining variables in the string. Anything with ${var} or
@@ -703,7 +692,7 @@ public:
* See cmConfigureFileCommand for details.
*/
void ConfigureString(const std::string& input, std::string& output,
- bool atOnly, bool escapeQuotes);
+ bool atOnly, bool escapeQuotes) const;
/**
* Copy file but change lines acording to ConfigureString
@@ -717,14 +706,14 @@ public:
/**
* find what source group this source is in
*/
- cmSourceGroup& FindSourceGroup(const char* source,
- std::vector<cmSourceGroup> &groups);
+ cmSourceGroup* FindSourceGroup(const char* source,
+ std::vector<cmSourceGroup> &groups) const;
#endif
/**
* Print a command's invocation
*/
- void PrintCommandTrace(const cmListFileFunction& lff);
+ void PrintCommandTrace(const cmListFileFunction& lff) const;
/**
* Execute a single CMake command. Returns true if the command
@@ -760,14 +749,14 @@ public:
#endif
///! Display progress or status message.
- void DisplayStatus(const char*, float);
+ void DisplayStatus(const char*, float) const;
/**
* Expand the given list file arguments into the full set after
* variable replacement and list expansion.
*/
bool ExpandArguments(std::vector<cmListFileArgument> const& inArgs,
- std::vector<std::string>& outArgs);
+ std::vector<std::string>& outArgs) const;
/**
* Get the instance
*/
@@ -784,7 +773,7 @@ public:
* Is there a source file that has the provided source file as an output?
* if so then return it
*/
- cmSourceFile *GetSourceFileWithOutput(const char *outName);
+ cmSourceFile *GetSourceFileWithOutput(const char *outName) const;
/**
* Add a macro to the list of macros. The arguments should be name of the
@@ -803,20 +792,20 @@ public:
/**
* Get a list of macros as a ; separated string
*/
- void GetListOfMacros(std::string& macros);
+ void GetListOfMacros(std::string& macros) const;
/**
* Return a location of a file in cmake or custom modules directory
*/
- std::string GetModulesFile(const char* name);
+ std::string GetModulesFile(const char* name) const;
///! Set/Get a property of this directory
void SetProperty(const char *prop, const char *value);
void AppendProperty(const char *prop, const char *value,bool asString=false);
- const char *GetProperty(const char *prop);
- const char *GetPropertyOrDefinition(const char *prop);
- const char *GetProperty(const char *prop, cmProperty::ScopeType scope);
- bool GetPropertyAsBool(const char *prop);
+ const char *GetProperty(const char *prop) const;
+ const char *GetPropertyOrDefinition(const char *prop) const;
+ const char *GetProperty(const char *prop, cmProperty::ScopeType scope) const;
+ bool GetPropertyAsBool(const char *prop) const;
const char* GetFeature(const char* feature, const char* config);
@@ -837,7 +826,7 @@ public:
void AddTestGenerator(cmTestGenerator* g)
{ if(g) this->TestGenerators.push_back(g); }
- std::vector<cmTestGenerator*>& GetTestGenerators()
+ const std::vector<cmTestGenerator*>& GetTestGenerators() const
{ return this->TestGenerators; }
// Define the properties
@@ -877,7 +866,7 @@ public:
return this->CompileDefinitionsEntries;
}
- bool IsGeneratingBuildSystem(){ return this->GeneratingBuildSystem; }
+ bool IsGeneratingBuildSystem() const { return this->GeneratingBuildSystem; }
void SetGeneratingBuildSystem(){ this->GeneratingBuildSystem = true; }
void AddQtUiFileWithOptions(cmSourceFile *sf);
@@ -958,7 +947,7 @@ private:
bool ParseDefineFlag(std::string const& definition, bool remove);
- bool EnforceUniqueDir(const char* srcPath, const char* binPath);
+ bool EnforceUniqueDir(const char* srcPath, const char* binPath) const;
friend class cmMakeDepend; // make depend needs direct access
// to the Sources array
@@ -979,9 +968,9 @@ private:
std::map<cmStdString, bool> SubDirectoryOrder;
- cmsys::RegularExpression cmDefineRegex;
- cmsys::RegularExpression cmDefine01Regex;
- cmsys::RegularExpression cmAtVarRegex;
+ mutable cmsys::RegularExpression cmDefineRegex;
+ mutable cmsys::RegularExpression cmDefine01Regex;
+ mutable cmsys::RegularExpression cmAtVarRegex;
cmPropertyMap Properties;
@@ -1005,7 +994,6 @@ private:
CallStackType CallStack;
friend class cmMakefileCall;
- cmTarget* FindBasicTarget(const char* name);
std::vector<cmTarget*> ImportedTargetsOwned;
std::map<cmStdString, cmTarget*> ImportedTargets;
@@ -1031,12 +1019,13 @@ private:
typedef std::vector<PolicyStackEntry> PolicyStackType;
PolicyStackType PolicyStack;
std::vector<PolicyStackType::size_type> PolicyBarriers;
- cmPolicies::PolicyStatus GetPolicyStatusInternal(cmPolicies::PolicyID id);
+ cmPolicies::PolicyStatus
+ GetPolicyStatusInternal(cmPolicies::PolicyID id) const;
bool CheckCMP0000;
// Enforce rules about CMakeLists.txt files.
- void EnforceDirectoryLevelRules();
+ void EnforceDirectoryLevelRules() const;
bool GeneratingBuildSystem;
/**
@@ -1045,7 +1034,7 @@ private:
* relative file paths. It is used as a fall back by
* GetSourceFileWithOutput(const char*).
*/
- cmSourceFile *LinearGetSourceFileWithOutput(const char *cname);
+ cmSourceFile *LinearGetSourceFileWithOutput(const char *cname) const;
// A map for fast output to input look up.
#if defined(CMAKE_BUILD_WITH_CMAKE)
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx
index ec98c2c..23422a2 100644
--- a/Source/cmSourceFile.cxx
+++ b/Source/cmSourceFile.cxx
@@ -142,7 +142,7 @@ bool cmSourceFile::FindFullPath(std::string* error)
}
// The file is not generated. It must exist on disk.
- cmMakefile* mf = this->Location.GetMakefile();
+ cmMakefile const* mf = this->Location.GetMakefile();
const char* tryDirs[3] = {0, 0, 0};
if(this->Location.DirectoryIsAmbiguous())
{
@@ -264,7 +264,7 @@ void cmSourceFile::CheckExtension()
void cmSourceFile::CheckLanguage(std::string const& ext)
{
// Try to identify the source file language from the extension.
- cmMakefile* mf = this->Location.GetMakefile();
+ cmMakefile const* mf = this->Location.GetMakefile();
cmGlobalGenerator* gg = mf->GetLocalGenerator()->GetGlobalGenerator();
if(const char* l = gg->GetLanguageFromExtension(ext.c_str()))
{
@@ -292,10 +292,10 @@ void cmSourceFile::SetProperty(const char* prop, const char* value)
cmSystemTools::GetFilenameLastExtension(this->Location.GetName());
if (ext == ".ui")
{
- cmMakefile* mf = this->Location.GetMakefile();
+ cmMakefile const* mf = this->Location.GetMakefile();
if (strcmp(prop, "AUTOUIC_OPTIONS") == 0)
{
- mf->AddQtUiFileWithOptions(this);
+ const_cast<cmMakefile*>(mf)->AddQtUiFileWithOptions(this);
}
}
}
@@ -360,7 +360,7 @@ const char* cmSourceFile::GetProperty(const char* prop) const
this->Properties.GetPropertyValue(prop, cmProperty::SOURCE_FILE, chain);
if (chain)
{
- cmMakefile* mf = this->Location.GetMakefile();
+ cmMakefile const* mf = this->Location.GetMakefile();
return mf->GetProperty(prop,cmProperty::SOURCE_FILE);
}
diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx
index 5525b61..5a8578b 100644
--- a/Source/cmSourceFileLocation.cxx
+++ b/Source/cmSourceFileLocation.cxx
@@ -18,7 +18,7 @@
//----------------------------------------------------------------------------
cmSourceFileLocation
-::cmSourceFileLocation(cmMakefile* mf, const char* name): Makefile(mf)
+::cmSourceFileLocation(cmMakefile const* mf, const char* name): Makefile(mf)
{
this->AmbiguousDirectory = !cmSystemTools::FileIsFullPath(name);
this->AmbiguousExtension = true;
@@ -89,7 +89,7 @@ void cmSourceFileLocation::UpdateExtension(const char* name)
// The global generator checks extensions of enabled languages.
cmGlobalGenerator* gg =
this->Makefile->GetLocalGenerator()->GetGlobalGenerator();
- cmMakefile* mf = this->Makefile;
+ cmMakefile const* mf = this->Makefile;
const std::vector<std::string>& srcExts = mf->GetSourceExtensions();
const std::vector<std::string>& hdrExts = mf->GetHeaderExtensions();
if(gg->GetLanguageFromExtension(ext.c_str()) ||
@@ -170,7 +170,7 @@ cmSourceFileLocation
// Only a fixed set of extensions will be tried to match a file on
// disk. One of these must match if loc refers to this source file.
std::string ext = this->Name.substr(loc.Name.size()+1);
- cmMakefile* mf = this->Makefile;
+ cmMakefile const* mf = this->Makefile;
const std::vector<std::string>& srcExts = mf->GetSourceExtensions();
if(std::find(srcExts.begin(), srcExts.end(), ext) != srcExts.end())
{
diff --git a/Source/cmSourceFileLocation.h b/Source/cmSourceFileLocation.h
index 216dd07..c03eee7 100644
--- a/Source/cmSourceFileLocation.h
+++ b/Source/cmSourceFileLocation.h
@@ -33,7 +33,7 @@ public:
* Construct for a source file created in a given cmMakefile
* instance with an initial name.
*/
- cmSourceFileLocation(cmMakefile* mf, const char* name);
+ cmSourceFileLocation(cmMakefile const* mf, const char* name);
/**
* Return whether the givne source file location could refers to the
@@ -81,9 +81,9 @@ public:
/**
* Get the cmMakefile instance for which the source file was created.
*/
- cmMakefile* GetMakefile() const { return this->Makefile; }
+ cmMakefile const* GetMakefile() const { return this->Makefile; }
private:
- cmMakefile* Makefile;
+ cmMakefile const* Makefile;
bool AmbiguousDirectory;
bool AmbiguousExtension;
std::string Directory;
diff --git a/Source/cmSourceGroup.cxx b/Source/cmSourceGroup.cxx
index f09976f..d272b6c 100644
--- a/Source/cmSourceGroup.cxx
+++ b/Source/cmSourceGroup.cxx
@@ -126,12 +126,12 @@ void cmSourceGroup::AddChild(cmSourceGroup child)
}
//----------------------------------------------------------------------------
-cmSourceGroup *cmSourceGroup::lookupChild(const char* name)
+cmSourceGroup *cmSourceGroup::LookupChild(const char* name) const
{
// initializing iterators
- std::vector<cmSourceGroup>::iterator iter =
+ std::vector<cmSourceGroup>::const_iterator iter =
this->Internal->GroupChildren.begin();
- std::vector<cmSourceGroup>::iterator end =
+ const std::vector<cmSourceGroup>::const_iterator end =
this->Internal->GroupChildren.end();
// st
@@ -142,7 +142,7 @@ cmSourceGroup *cmSourceGroup::lookupChild(const char* name)
// look if descenened is the one were looking for
if(sgName == name)
{
- return &(*iter); // if it so return it
+ return const_cast<cmSourceGroup*>(&(*iter)); // if it so return it
}
}
diff --git a/Source/cmSourceGroup.h b/Source/cmSourceGroup.h
index 11a0c74..3bbdef9 100644
--- a/Source/cmSourceGroup.h
+++ b/Source/cmSourceGroup.h
@@ -56,7 +56,7 @@ public:
/**
* Looks up child and returns it
*/
- cmSourceGroup *lookupChild(const char *name);
+ cmSourceGroup *LookupChild(const char *name) const;
/**
* Get the name of this group.
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index eee7c14..ed7e243 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -708,9 +708,9 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
{
cmSourceFile* sf = *s;
std::string const& source = sf->GetFullPath();
- cmSourceGroup& sourceGroup =
+ cmSourceGroup* sourceGroup =
this->Makefile->FindSourceGroup(source.c_str(), sourceGroups);
- groupsUsed.insert(&sourceGroup);
+ groupsUsed.insert(sourceGroup);
}
this->AddMissingSourceGroups(groupsUsed, sourceGroups);
@@ -901,9 +901,9 @@ WriteGroupSources(const char* name,
{
cmSourceFile* sf = s->SourceFile;
std::string const& source = sf->GetFullPath();
- cmSourceGroup& sourceGroup =
+ cmSourceGroup* sourceGroup =
this->Makefile->FindSourceGroup(source.c_str(), sourceGroups);
- const char* filter = sourceGroup.GetFullName();
+ const char* filter = sourceGroup->GetFullName();
this->WriteString("<", 2);
std::string path = this->ConvertPath(source, s->RelativePath);
this->ConvertToWindowsSlash(path);
diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt
index 41714f6..ce36830 100644
--- a/Tests/CMakeTests/CMakeLists.txt
+++ b/Tests/CMakeTests/CMakeLists.txt
@@ -38,6 +38,10 @@ AddCMakeTest(FileDownload "")
set_property(TEST CMake.FileDownload PROPERTY
PASS_REGULAR_EXPRESSION "file already exists with expected MD5 sum"
)
+AddCMakeTest(FileDownloadBadHash "")
+set_property(TEST CMake.FileDownloadBadHash PROPERTY
+ WILL_FAIL TRUE
+ )
AddCMakeTest(FileUpload "")
diff --git a/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in b/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in
new file mode 100644
index 0000000..4a47c06
--- /dev/null
+++ b/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in
@@ -0,0 +1,10 @@
+set(url "file://@CMAKE_CURRENT_SOURCE_DIR@/FileDownloadInput.png")
+set(dir "@CMAKE_CURRENT_BINARY_DIR@/downloads")
+
+file(DOWNLOAD
+ ${url}
+ ${dir}/file3.png
+ TIMEOUT 2
+ STATUS status
+ EXPECTED_HASH SHA1=5555555555555555555555555555555555555555
+ )
diff --git a/Tests/CMakeTests/FileDownloadTest.cmake.in b/Tests/CMakeTests/FileDownloadTest.cmake.in
index 91086c6..83ade2b 100644
--- a/Tests/CMakeTests/FileDownloadTest.cmake.in
+++ b/Tests/CMakeTests/FileDownloadTest.cmake.in
@@ -94,3 +94,16 @@ file(DOWNLOAD
EXPECTED_MD5 d16778650db435bda3a8c3435c3ff5d1
)
message(STATUS "${status}")
+
+message(STATUS "FileDownload:11")
+file(DOWNLOAD
+ badhostname.png
+ ${dir}/file11.png
+ TIMEOUT 2
+ STATUS status
+ )
+message(STATUS "${status}")
+list(GET status 0 status_code)
+if(NOT ${status_code} EQUAL 6)
+ message(SEND_ERROR "error: expected status code 6 for bad host name, got: ${status_code}")
+endif()
diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake
index db4e08d..642a618 100644
--- a/Tests/CTestUpdateCommon.cmake
+++ b/Tests/CTestUpdateCommon.cmake
@@ -54,7 +54,9 @@ function(check_updates build)
set(EXTRA "${UPDATE_XML_ENTRIES}")
list(REMOVE_ITEM EXTRA ${ARGN} ${UPDATE_EXTRA} ${UPDATE_MAYBE})
set(MISSING "${ARGN}" ${UPDATE_EXTRA})
- list(REMOVE_ITEM MISSING ${UPDATE_XML_ENTRIES})
+ if(NOT "" STREQUAL "${UPDATE_XML_ENTRIES}")
+ list(REMOVE_ITEM MISSING ${UPDATE_XML_ENTRIES})
+ endif()
if(NOT UPDATE_NOT_GLOBAL)
set(rev_elements Revision PriorRevision ${UPDATE_GLOBAL_ELEMENTS})