diff options
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}) |