diff options
author | Stephen Kelly <steveire@gmail.com> | 2016-01-28 21:10:26 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2016-06-13 18:19:16 (GMT) |
commit | 905e738ffeb1ec1b5d1a376b99e300a8787f7255 (patch) | |
tree | f67f157fd02b911636f4cb35fdac07fbce967768 /Source/cmListFileCache.cxx | |
parent | 0a9094cd1017057d3c5141fdacdc6a89fb14acfc (diff) | |
download | CMake-905e738ffeb1ec1b5d1a376b99e300a8787f7255.zip CMake-905e738ffeb1ec1b5d1a376b99e300a8787f7255.tar.gz CMake-905e738ffeb1ec1b5d1a376b99e300a8787f7255.tar.bz2 |
Parser: Out-of-line conditional code to cmMakefile
Simplify parser API.
Diffstat (limited to 'Source/cmListFileCache.cxx')
-rw-r--r-- | Source/cmListFileCache.cxx | 72 |
1 files changed, 1 insertions, 71 deletions
diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index 4df542f..4460418 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -118,7 +118,7 @@ bool cmListFileParser::ParseFile() return true; } -bool cmListFile::ParseFile(const char* filename, bool topLevel, cmMakefile* mf) +bool cmListFile::ParseFile(const char* filename, cmMakefile* mf) { if (!cmSystemTools::FileExists(filename) || cmSystemTools::FileIsDirectory(filename)) { @@ -132,76 +132,6 @@ bool cmListFile::ParseFile(const char* filename, bool topLevel, cmMakefile* mf) parseError = !parser.ParseFile(); } - // do we need a cmake_policy(VERSION call? - if (topLevel) { - bool hasVersion = false; - // search for the right policy command - for (std::vector<cmListFileFunction>::iterator i = this->Functions.begin(); - i != this->Functions.end(); ++i) { - if (cmSystemTools::LowerCase(i->Name) == "cmake_minimum_required") { - hasVersion = true; - break; - } - } - // if no policy command is found this is an error if they use any - // non advanced functions or a lot of functions - if (!hasVersion) { - bool isProblem = true; - if (this->Functions.size() < 30) { - // the list of simple commands DO NOT ADD TO THIS LIST!!!!! - // these commands must have backwards compatibility forever and - // and that is a lot longer than your tiny mind can comprehend mortal - std::set<std::string> allowedCommands; - allowedCommands.insert("project"); - allowedCommands.insert("set"); - allowedCommands.insert("if"); - allowedCommands.insert("endif"); - allowedCommands.insert("else"); - allowedCommands.insert("elseif"); - allowedCommands.insert("add_executable"); - allowedCommands.insert("add_library"); - allowedCommands.insert("target_link_libraries"); - allowedCommands.insert("option"); - allowedCommands.insert("message"); - isProblem = false; - for (std::vector<cmListFileFunction>::iterator i = - this->Functions.begin(); - i != this->Functions.end(); ++i) { - std::string name = cmSystemTools::LowerCase(i->Name); - if (allowedCommands.find(name) == allowedCommands.end()) { - isProblem = true; - break; - } - } - } - - if (isProblem) { - // Tell the top level cmMakefile to diagnose - // this violation of CMP0000. - mf->SetCheckCMP0000(true); - - // Implicitly set the version for the user. - mf->SetPolicyVersion("2.4"); - } - } - bool hasProject = false; - // search for a project command - for (std::vector<cmListFileFunction>::iterator i = this->Functions.begin(); - i != this->Functions.end(); ++i) { - if (cmSystemTools::LowerCase(i->Name) == "project") { - hasProject = true; - break; - } - } - // if no project command is found, add one - if (!hasProject) { - cmListFileFunction project; - project.Name = "PROJECT"; - cmListFileArgument prj("Project", cmListFileArgument::Unquoted, 0); - project.Arguments.push_back(prj); - this->Functions.insert(this->Functions.begin(), project); - } - } return !parseError; } |