diff options
Diffstat (limited to 'Source/cmake.cxx')
-rw-r--r-- | Source/cmake.cxx | 331 |
1 files changed, 193 insertions, 138 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 0bd047f..e43e1da 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -9,8 +9,8 @@ Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ @@ -78,7 +78,7 @@ #include <memory> // auto_ptr -void cmNeedBackwardsCompatibility(const std::string& variable, +void cmNeedBackwardsCompatibility(const std::string& variable, int access_type, void* ) { #ifdef CMAKE_BUILD_WITH_CMAKE @@ -86,12 +86,14 @@ void cmNeedBackwardsCompatibility(const std::string& variable, { std::string message = "An attempt was made to access a variable: "; message += variable; - message += " that has not been defined. Some variables were always defined " - "by CMake in versions prior to 1.6. To fix this you might need to set the " - "cache value of CMAKE_BACKWARDS_COMPATIBILITY to 1.4 or less. If you are " - "writing a CMakeList file, (or have already set " - "CMAKE_BACKWARDS_COMPATABILITY to 1.4 or less) then you probably need to " - "include a CMake module to test for the feature this variable defines."; + message += + " that has not been defined. Some variables were always defined " + "by CMake in versions prior to 1.6. To fix this you might need to set " + "the cache value of CMAKE_BACKWARDS_COMPATIBILITY to 1.4 or less. If " + "you are writing a CMakeList file, (or have already set " + "CMAKE_BACKWARDS_COMPATABILITY to 1.4 or less) then you probably need " + "to include a CMake module to test for the feature this variable " + "defines."; cmSystemTools::Error(message.c_str()); } #else @@ -105,7 +107,7 @@ cmake::cmake() m_DebugTryCompile = false; m_ClearBuildSystem = false; m_FileComparison = new cmFileTimeComparison; - + #ifdef __APPLE__ struct rlimit rlp; if(!getrlimit(RLIMIT_STACK, &rlp)) @@ -126,8 +128,8 @@ cmake::cmake() if(getenv("MAKEFLAGS")) { cmSystemTools::PutEnv("MAKEFLAGS="); - } - + } + m_Verbose = false; m_InTryCompile = false; m_CacheManager = new cmCacheManager; @@ -202,7 +204,7 @@ bool cmake::CommandExists(const char* name) const return (m_Commands.find(sName) != m_Commands.end()); } -cmCommand *cmake::GetCommand(const char *name) +cmCommand *cmake::GetCommand(const char *name) { cmCommand* rm = 0; std::string sName = cmSystemTools::LowerCase(name); @@ -252,7 +254,7 @@ void cmake::AddCommand(cmCommand* wg) // Parse the args bool cmake::SetCacheArgs(const std::vector<std::string>& args) -{ +{ for(unsigned int i=1; i < args.size(); ++i) { std::string arg = args[i]; @@ -278,7 +280,7 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args) << "Should be: VAR:type=value\n"; cmSystemTools::Error("No cmake scrpt provided."); return false; - } + } } else if(arg.find("-C",0) == 0) { @@ -311,7 +313,7 @@ void cmake::ReadListFile(const char *path) // if a generator was not yet created, temporarily create one cmGlobalGenerator *gg = this->GetGlobalGenerator(); bool created = false; - + // if a generator was not specified use a generic one if (!gg) { @@ -338,7 +340,7 @@ void cmake::ReadListFile(const char *path) std::cerr << "Error processing file:" << path << "\n"; } } - + // free generic one if generated if (created) { @@ -422,7 +424,7 @@ void cmake::SetArgs(const std::vector<std::string>& args) { value = args[++i]; } - cmGlobalGenerator* gen = + cmGlobalGenerator* gen = this->CreateGlobalGenerator(value.c_str()); if(!gen) { @@ -520,28 +522,29 @@ void cmake::SetDirectoriesFromFile(const char* arg) { cmCacheManager* cachem = this->GetCacheManager(); cmCacheManager::CacheIterator it = cachem->NewIterator(); - if(cachem->LoadCache(cachePath.c_str()) && it.Find("CMAKE_HOME_DIRECTORY")) + if(cachem->LoadCache(cachePath.c_str()) && + it.Find("CMAKE_HOME_DIRECTORY")) { - this->SetHomeOutputDirectory(cachePath.c_str()); - this->SetStartOutputDirectory(cachePath.c_str()); + this->SetHomeOutputDirectory(cachePath.c_str()); + this->SetStartOutputDirectory(cachePath.c_str()); this->SetHomeDirectory(it.GetValue()); this->SetStartDirectory(it.GetValue()); return; } } - + // If there is a CMakeLists.txt file, use it as the source tree. if(listPath.length() > 0) { this->SetHomeDirectory(listPath.c_str()); this->SetStartDirectory(listPath.c_str()); - + if(argIsFile) { // Source CMakeLists.txt file given. It was probably dropped // onto the executable in a GUI. Default to an in-source build. - this->SetHomeOutputDirectory(listPath.c_str()); - this->SetStartOutputDirectory(listPath.c_str()); + this->SetHomeOutputDirectory(listPath.c_str()); + this->SetStartOutputDirectory(listPath.c_str()); } else { @@ -549,11 +552,11 @@ void cmake::SetDirectoriesFromFile(const char* arg) // directory as build tree. std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); this->SetHomeOutputDirectory(cwd.c_str()); - this->SetStartOutputDirectory(cwd.c_str()); + this->SetStartOutputDirectory(cwd.c_str()); } return; } - + // We didn't find a CMakeLists.txt or CMakeCache.txt file from the // argument. Assume it is the path to the source tree, and use the // current working directory as the build tree. @@ -562,10 +565,11 @@ void cmake::SetDirectoriesFromFile(const char* arg) this->SetHomeDirectory(full.c_str()); this->SetStartDirectory(full.c_str()); this->SetHomeOutputDirectory(cwd.c_str()); - this->SetStartOutputDirectory(cwd.c_str()); + this->SetStartOutputDirectory(cwd.c_str()); } -// at the end of this CMAKE_ROOT and CMAKE_COMMAND should be added to the cache +// at the end of this CMAKE_ROOT and CMAKE_COMMAND should be added to the +// cache int cmake::AddCMakePaths(const char *arg0) { // Find our own executable. @@ -638,7 +642,7 @@ int cmake::AddCMakePaths(const char *arg0) ("CMAKE_EDIT_COMMAND", editCacheCommand.c_str(), "Path to cache edit program executable.", cmCacheManager::INTERNAL); } - + // do CMAKE_ROOT, look for the environment variable first std::string cMakeRoot; std::string modules; @@ -652,14 +656,14 @@ int cmake::AddCMakePaths(const char *arg0) // next try exe/.. cMakeRoot = cmSystemTools::GetProgramPath(cMakeSelf.c_str()); std::string::size_type slashPos = cMakeRoot.rfind("/"); - if(slashPos != std::string::npos) + if(slashPos != std::string::npos) { cMakeRoot = cMakeRoot.substr(0, slashPos); } // is there no Modules direcory there? - modules = cMakeRoot + "/Modules/CMake.cmake"; + modules = cMakeRoot + "/Modules/CMake.cmake"; } - + if (!cmSystemTools::FileExists(modules.c_str())) { // try exe/../share/cmake @@ -684,7 +688,7 @@ int cmake::AddCMakePaths(const char *arg0) #endif if (!cmSystemTools::FileExists(modules.c_str())) { - // try + // try cMakeRoot = cmSystemTools::GetProgramPath(cMakeSelf.c_str()); cMakeRoot += CMAKE_DATA_DIR; modules = cMakeRoot + "/Modules/CMake.cmake"; @@ -694,15 +698,15 @@ int cmake::AddCMakePaths(const char *arg0) // next try exe cMakeRoot = cmSystemTools::GetProgramPath(cMakeSelf.c_str()); // is there no Modules direcory there? - modules = cMakeRoot + "/Modules/CMake.cmake"; + modules = cMakeRoot + "/Modules/CMake.cmake"; } if (!cmSystemTools::FileExists(modules.c_str())) { // couldn't find modules cmSystemTools::Error("Could not find CMAKE_ROOT !!!\n" - "CMake has most likely not been installed correctly.\n" - "Modules directory not found in\n", - cMakeRoot.c_str()); + "CMake has most likely not been installed correctly.\n" + "Modules directory not found in\n", + cMakeRoot.c_str()); return 0; } this->m_CacheManager->AddCacheEntry @@ -723,20 +727,23 @@ void CMakeCommandUsage(const char* program) cmOStringStream errorStream; #ifdef CMAKE_BUILD_WITH_CMAKE - errorStream + errorStream << "cmake version " << cmVersion::GetCMakeVersion() << "\n"; #else - errorStream + errorStream << "cmake bootstrap\n"; #endif - errorStream + errorStream << "Usage: " << program << " -E [command] [arguments ...]\n" << "Available commands: \n" << " chdir dir cmd [args]... - run command in a given directory\n" - << " copy file destination - copy file to destination (either file or directory)\n" - << " copy_if_different in-file out-file - copy file if input has changed\n" - << " copy_directory source destination - copy directory 'source' content to directory 'destination'\n" + << " copy file destination - copy file to destination (either file or " + "directory)\n" + << " copy_if_different in-file out-file - copy file if input has " + "changed\n" + << " copy_directory source destination - copy directory 'source' " + "content to directory 'destination'\n" << " compare_files file1 file2 - check if file1 is same as file2\n" << " echo [string]... - displays arguments as text\n" << " remove file1 file2 ... - remove the file(s)\n" @@ -774,7 +781,8 @@ int cmake::CMakeCommand(std::vector<std::string>& args) // Copy file if different. if (args[1] == "copy_if_different" && args.size() == 4) { - if(!cmSystemTools::CopyFileIfDifferent(args[2].c_str(), args[3].c_str())) + if(!cmSystemTools::CopyFileIfDifferent(args[2].c_str(), + args[3].c_str())) { std::cerr << "Error copying file (if different) from \"" << args[2].c_str() << "\" to \"" << args[3].c_str() @@ -856,17 +864,17 @@ int cmake::CMakeCommand(std::vector<std::string>& args) time(&time_start); clock_start = clock(); - + cmSystemTools::RunSingleCommand(command.c_str()); clock_finish = clock(); time(&time_finish); double clocks_per_sec = (double)CLOCKS_PER_SEC; - std::cout << "Elapsed time: " + std::cout << "Elapsed time: " << (long)(time_finish - time_start) << " s. (time)" - << ", " - << (double)(clock_finish - clock_start) / clocks_per_sec + << ", " + << (double)(clock_finish - clock_start) / clocks_per_sec << " s. (clock)" << "\n"; return 0; @@ -894,11 +902,11 @@ int cmake::CMakeCommand(std::vector<std::string>& args) } int retval = 0; int timeout = 0; - if ( cmSystemTools::RunSingleCommand(command.c_str(), 0, &retval, + if ( cmSystemTools::RunSingleCommand(command.c_str(), 0, &retval, directory.c_str(), true, timeout) ) { return retval; - } + } return 1; } @@ -1011,7 +1019,8 @@ int cmake::CMakeCommand(std::vector<std::string>& args) } else if ( flags.find_first_of('c') != flags.npos ) { - if ( !cmSystemTools::CreateTar(outFile.c_str(), files, gzip, verbose) ) + if ( !cmSystemTools::CreateTar( + outFile.c_str(), files, gzip, verbose) ) { cmSystemTools::Error("Problem creating tar: ", outFile.c_str()); return 1; @@ -1019,7 +1028,8 @@ int cmake::CMakeCommand(std::vector<std::string>& args) } else if ( flags.find_first_of('x') != flags.npos ) { - if ( !cmSystemTools::ExtractTar(outFile.c_str(), files, gzip, verbose) ) + if ( !cmSystemTools::ExtractTar( + outFile.c_str(), files, gzip, verbose) ) { cmSystemTools::Error("Problem extracting tar: ", outFile.c_str()); return 1; @@ -1040,7 +1050,7 @@ int cmake::CMakeCommand(std::vector<std::string>& args) // Write registry value else if (args[1] == "write_regv" && args.size() > 3) { - return cmSystemTools::WriteRegistryValue(args[2].c_str(), + return cmSystemTools::WriteRegistryValue(args[2].c_str(), args[3].c_str()) ? 0 : 1; } @@ -1091,7 +1101,7 @@ cmGlobalGenerator* cmake::CreateGlobalGenerator(const char* name) } } -void cmake::SetHomeDirectory(const char* dir) +void cmake::SetHomeDirectory(const char* dir) { m_cmHomeDirectory = dir; cmSystemTools::ConvertToUnixSlashes(m_cmHomeDirectory); @@ -1127,7 +1137,7 @@ void cmake::SetGlobalGenerator(cmGlobalGenerator *gg) // set the new m_GlobalGenerator = gg; - // set the global flag for unix style paths on cmSystemTools as + // set the global flag for unix style paths on cmSystemTools as // soon as the generator is set. This allows gmake to be used // on windows. cmSystemTools::SetForceUnixPaths(m_GlobalGenerator->GetForceUnixPaths()); @@ -1177,15 +1187,16 @@ int cmake::DoPreConfigureChecks() err << "The source directory \"" << this->GetHomeDirectory() << "\" does not exist.\n"; } - err << "Specify --help for usage, or press the help button on the CMake GUI."; + err << "Specify --help for usage, or press the help button on the CMake " + "GUI."; cmSystemTools::Error(err.str().c_str()); return -2; } - + // do a sanity check on some values if(m_CacheManager->GetCacheValue("CMAKE_HOME_DIRECTORY")) { - std::string cacheStart = + std::string cacheStart = m_CacheManager->GetCacheValue("CMAKE_HOME_DIRECTORY"); cacheStart += "/CMakeLists.txt"; std::string currentStart = this->GetHomeDirectory(); @@ -1226,12 +1237,13 @@ int cmake::Configure() } if ( !res ) { - m_CacheManager->AddCacheEntry("CMAKE_HOME_DIRECTORY", - this->GetHomeDirectory(), - "Start directory with the top level CMakeLists.txt file for this project", - cmCacheManager::INTERNAL); + m_CacheManager->AddCacheEntry("CMAKE_HOME_DIRECTORY", + this->GetHomeDirectory(), + "Start directory with the top level CMakeLists.txt file for this " + "project", + cmCacheManager::INTERNAL); } - + // set the default BACKWARDS compatibility to the current version if(!m_CacheManager->GetCacheValue("CMAKE_BACKWARDS_COMPATIBILITY")) { @@ -1239,11 +1251,12 @@ int cmake::Configure() sprintf(ver,"%i.%i",cmMakefile::GetMajorVersion(), cmMakefile::GetMinorVersion()); this->m_CacheManager->AddCacheEntry - ("CMAKE_BACKWARDS_COMPATIBILITY",ver, - "For backwards compatibility, what version of CMake commands and syntax should this version of CMake allow.", + ("CMAKE_BACKWARDS_COMPATIBILITY",ver, + "For backwards compatibility, what version of CMake commands and " + "syntax should this version of CMake allow.", cmCacheManager::STRING); - } - + } + // no generator specified on the command line if(!m_GlobalGenerator) { @@ -1254,10 +1267,11 @@ int cmake::Configure() } if(m_GlobalGenerator) { - // set the global flag for unix style paths on cmSystemTools as + // set the global flag for unix style paths on cmSystemTools as // soon as the generator is set. This allows gmake to be used // on windows. - cmSystemTools::SetForceUnixPaths(m_GlobalGenerator->GetForceUnixPaths()); + cmSystemTools::SetForceUnixPaths( + m_GlobalGenerator->GetForceUnixPaths()); } else { @@ -1265,7 +1279,8 @@ int cmake::Configure() this->SetGlobalGenerator(new cmGlobalBorlandMakefileGenerator); #elif defined(_WIN32) && !defined(__CYGWIN__) && !defined(CMAKE_BOOT_MINGW) std::string installedCompiler; - std::string mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup;Dbghelp_path]"; + std::string mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft" + "\\VisualStudio\\8.0\\Setup;Dbghelp_path]"; cmSystemTools::ExpandRegistryValues(mp); if (!(mp == "/registry")) { @@ -1273,7 +1288,8 @@ int cmake::Configure() } else { - mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1;InstallDir]"; + mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft" + "\\VisualStudio\\7.1;InstallDir]"; cmSystemTools::ExpandRegistryValues(mp); if (!(mp == "/registry")) { @@ -1281,7 +1297,8 @@ int cmake::Configure() } else { - mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.0;InstallDir]"; + mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft" + "\\VisualStudio\\7.0;InstallDir]"; cmSystemTools::ExpandRegistryValues(mp); if (!(mp == "/registry")) { @@ -1293,7 +1310,8 @@ int cmake::Configure() } } } - cmGlobalGenerator* gen = this->CreateGlobalGenerator(installedCompiler.c_str()); + cmGlobalGenerator* gen + = this->CreateGlobalGenerator(installedCompiler.c_str()); if(!gen) { gen = new cmGlobalNMakeMakefileGenerator; @@ -1328,7 +1346,8 @@ int cmake::Configure() } if(!m_CacheManager->GetCacheValue("CMAKE_GENERATOR")) { - m_CacheManager->AddCacheEntry("CMAKE_GENERATOR", m_GlobalGenerator->GetName(), + m_CacheManager->AddCacheEntry("CMAKE_GENERATOR", + m_GlobalGenerator->GetName(), "Name of generator.", cmCacheManager::INTERNAL); } @@ -1340,7 +1359,7 @@ int cmake::Configure() { m_GlobalGenerator->ClearEnabledLanguages(); } - + this->CleanupWrittenFiles(); // Truncate log files @@ -1352,7 +1371,7 @@ int cmake::Configure() // actually do the configure m_GlobalGenerator->Configure(); - + // Before saving the cache // if the project did not define one of the entries below, add them now // so users can edit the values in the cache: @@ -1361,30 +1380,31 @@ int cmake::Configure() if(!m_CacheManager->GetCacheValue("LIBRARY_OUTPUT_PATH")) { m_CacheManager->AddCacheEntry("LIBRARY_OUTPUT_PATH", "", - "Single output directory for building all libraries.", - cmCacheManager::PATH); - } + "Single output directory for building all libraries.", + cmCacheManager::PATH); + } if(!m_CacheManager->GetCacheValue("EXECUTABLE_OUTPUT_PATH")) { m_CacheManager->AddCacheEntry("EXECUTABLE_OUTPUT_PATH", "", - "Single output directory for building all executables.", - cmCacheManager::PATH); - } + "Single output directory for building all executables.", + cmCacheManager::PATH); + } if(!m_CacheManager->GetCacheValue("CMAKE_USE_RELATIVE_PATHS")) { m_CacheManager->AddCacheEntry("CMAKE_USE_RELATIVE_PATHS", false, - "If true, cmake will use relative paths in makefiles and projects."); + "If true, cmake will use relative paths in makefiles and projects."); cmCacheManager::CacheIterator it = m_CacheManager->GetCacheIterator("CMAKE_USE_RELATIVE_PATHS"); if ( !it.PropertyExists("ADVANCED") ) { it.SetProperty("ADVANCED", "1"); } - } - + } + if(cmSystemTools::GetFatalErrorOccured() && (!this->m_CacheManager->GetCacheValue("CMAKE_MAKE_PROGRAM") || - cmSystemTools::IsOff(this->m_CacheManager->GetCacheValue("CMAKE_MAKE_PROGRAM")))) + cmSystemTools::IsOff( + this->m_CacheManager->GetCacheValue("CMAKE_MAKE_PROGRAM")))) { // We must have a bad generator selection. Wipe the cache entry so the // user can select another. @@ -1409,13 +1429,16 @@ int cmake::Configure() bool cmake::CacheVersionMatches() { - const char* majv = m_CacheManager->GetCacheValue("CMAKE_CACHE_MAJOR_VERSION"); - const char* minv = m_CacheManager->GetCacheValue("CMAKE_CACHE_MINOR_VERSION"); - const char* relv = m_CacheManager->GetCacheValue("CMAKE_CACHE_RELEASE_VERSION"); + const char* majv + = m_CacheManager->GetCacheValue("CMAKE_CACHE_MAJOR_VERSION"); + const char* minv + = m_CacheManager->GetCacheValue("CMAKE_CACHE_MINOR_VERSION"); + const char* relv + = m_CacheManager->GetCacheValue("CMAKE_CACHE_RELEASE_VERSION"); bool cacheSameCMake = false; - if(majv && + if(majv && atoi(majv) == static_cast<int>(cmMakefile::GetMajorVersion()) - && minv && + && minv && atoi(minv) == static_cast<int>(cmMakefile::GetMinorVersion()) && relv && (strcmp(relv, cmMakefile::GetReleaseVersion()) == 0)) { @@ -1456,16 +1479,16 @@ int cmake::Run(const std::vector<std::string>& args, bool noconfigure) CMakeCommandUsage(args[0].c_str()); return -1; } - + // set the cmake command m_CMakeCommand = args[0]; - + if ( !m_ScriptMode ) { // load the cache if(this->LoadCache() < 0) { - cmSystemTools::Error("Error executing cmake::LoadCache(). Aborting.\n"); + cmSystemTools::Error("Error executing cmake::LoadCache(). Aborting.\n"); return -1; } } @@ -1510,7 +1533,7 @@ int cmake::Run(const std::vector<std::string>& args, bool noconfigure) { return 0; } - + // If we are doing global generate, we better set start and start // output directory to the root of the project. std::string oldstartdir = this->GetStartDirectory(); @@ -1550,26 +1573,26 @@ int cmake::Generate() return 0; } -unsigned int cmake::GetMajorVersion() -{ +unsigned int cmake::GetMajorVersion() +{ return cmMakefile::GetMajorVersion(); } unsigned int cmake::GetMinorVersion() -{ +{ return cmMakefile::GetMinorVersion(); } const char *cmake::GetReleaseVersion() -{ +{ return cmMakefile::GetReleaseVersion(); } -void cmake::AddCacheEntry(const char* key, const char* value, - const char* helpString, +void cmake::AddCacheEntry(const char* key, const char* value, + const char* helpString, int type) { - m_CacheManager->AddCacheEntry(key, value, + m_CacheManager->AddCacheEntry(key, value, helpString, cmCacheManager::CacheEntryType(type)); } @@ -1666,22 +1689,27 @@ int cmake::LoadCache() cacheFile += "/CMakeCache.txt"; if(cmSystemTools::FileExists(cacheFile.c_str())) { - cmSystemTools::Error("There is a CMakeCache.txt file for the current binary tree but cmake does not have permission to read it. Please check the permissions of the directory you are trying to run CMake on."); + cmSystemTools::Error( + "There is a CMakeCache.txt file for the current binary tree but " + "cmake does not have permission to read it. Please check the " + "permissions of the directory you are trying to run CMake on."); return -1; } } if (m_CMakeCommand.size() < 2) { - cmSystemTools::Error("cmake command was not specified prior to loading the cache in cmake.cxx"); + cmSystemTools::Error( + "cmake command was not specified prior to loading the cache in " + "cmake.cxx"); return -1; } - + // setup CMAKE_ROOT and CMAKE_COMMAND if(!this->AddCMakePaths(m_CMakeCommand.c_str())) { return -3; - } + } // set the default BACKWARDS compatibility to the current version if(!m_CacheManager->GetCacheValue("CMAKE_BACKWARDS_COMPATIBILITY")) @@ -1690,11 +1718,12 @@ int cmake::LoadCache() sprintf(ver,"%i.%i",cmMakefile::GetMajorVersion(), cmMakefile::GetMinorVersion()); this->m_CacheManager->AddCacheEntry - ("CMAKE_BACKWARDS_COMPATIBILITY",ver, - "For backwards compatibility, what version of CMake commands and syntax should this version of CMake allow.", + ("CMAKE_BACKWARDS_COMPATIBILITY",ver, + "For backwards compatibility, what version of CMake commands and " + "syntax should this version of CMake allow.", cmCacheManager::STRING); } - + return 0; } @@ -1713,7 +1742,8 @@ void cmake::UpdateProgress(const char *msg, float prog) } } -void cmake::GetCommandDocumentation(std::vector<cmDocumentationEntry>& v) const +void cmake::GetCommandDocumentation( + std::vector<cmDocumentationEntry>& v) const { for(RegisteredCommandsMap::const_iterator j = m_Commands.begin(); j != m_Commands.end(); ++j) @@ -1763,7 +1793,7 @@ void cmake::CleanupWrittenFiles() void cmake::UpdateConversionPathTable() { // Update the path conversion table with any specified file: - const char* tablepath = + const char* tablepath = m_CacheManager->GetCacheValue("CMAKE_PATH_TRANSLATION_FILE"); if(tablepath) @@ -1771,7 +1801,8 @@ void cmake::UpdateConversionPathTable() std::ifstream table( tablepath ); if(!table) { - cmSystemTools::Error("CMAKE_PATH_TRANSLATION_FILE set to ", tablepath, ". CMake can not open file."); + cmSystemTools::Error("CMAKE_PATH_TRANSLATION_FILE set to ", tablepath, + ". CMake can not open file."); cmSystemTools::ReportLastSystemError("CMake can not open file."); } else @@ -1844,7 +1875,7 @@ int cmake::CheckBuildSystem() out != outputs.end(); ++out) { int result = 0; - if(!m_FileComparison->FileTimeCompare(out->c_str(), + if(!m_FileComparison->FileTimeCompare(out->c_str(), dep->c_str(), &result) || result < 0) { @@ -1917,7 +1948,8 @@ const char* cmake::GetCTestCommand() return m_CTestCommand.c_str(); } - cmMakefile* mf = this->GetGlobalGenerator()->GetLocalGenerator(0)->GetMakefile(); + cmMakefile* mf + = this->GetGlobalGenerator()->GetLocalGenerator(0)->GetMakefile(); #ifdef CMAKE_BUILD_WITH_CMAKE m_CTestCommand = mf->GetRequiredDefinition("CMAKE_COMMAND"); m_CTestCommand = removeQuotes(m_CTestCommand); @@ -1962,7 +1994,8 @@ const char* cmake::GetCPackCommand() return m_CPackCommand.c_str(); } - cmMakefile* mf = this->GetGlobalGenerator()->GetLocalGenerator(0)->GetMakefile(); + cmMakefile* mf + = this->GetGlobalGenerator()->GetLocalGenerator(0)->GetMakefile(); #ifdef CMAKE_BUILD_WITH_CMAKE m_CPackCommand = mf->GetRequiredDefinition("CMAKE_COMMAND"); @@ -2031,10 +2064,12 @@ void cmake::GenerateGraphViz(const char* fileName) { if ( !mf->ReadListFile(0, infile.c_str()) ) { - cmSystemTools::Error("Problem opening GraphViz options file: ", infile.c_str()); + cmSystemTools::Error("Problem opening GraphViz options file: ", + infile.c_str()); return; } - std::cout << "Read GraphViz options file: " << infile.c_str() << std::endl; + std::cout << "Read GraphViz options file: " << infile.c_str() + << std::endl; } #define __set_if_not_set(var, value, cmakeDefinition) \ @@ -2045,7 +2080,8 @@ void cmake::GenerateGraphViz(const char* fileName) } __set_if_not_set(graphType, "digraph", "GRAPHVIZ_GRAPH_TYPE"); __set_if_not_set(graphName, "GG", "GRAPHVIZ_GRAPH_NAME"); - __set_if_not_set(graphHeader, "node [\n fontsize = \"12\"\n];", "GRAPHVIZ_GRAPH_HEADER"); + __set_if_not_set(graphHeader, "node [\n fontsize = \"12\"\n];", + "GRAPHVIZ_GRAPH_HEADER"); __set_if_not_set(graphNodePrefix, "node", "GRAPHVIZ_NODE_PREFIX"); const char* ignoreTargets = mf->GetDefinition("GRAPHVIZ_IGNORE_TARGETS"); std::set<cmStdString> ignoreTargetsSet; @@ -2054,12 +2090,14 @@ void cmake::GenerateGraphViz(const char* fileName) std::vector<std::string> ignoreTargetsVector; cmSystemTools::ExpandListArgument(ignoreTargets,ignoreTargetsVector); std::vector<std::string>::iterator itvIt; - for ( itvIt = ignoreTargetsVector.begin(); itvIt != ignoreTargetsVector.end(); ++ itvIt ) + for ( itvIt = ignoreTargetsVector.begin(); + itvIt != ignoreTargetsVector.end(); + ++ itvIt ) { ignoreTargetsSet.insert(itvIt->c_str()); } } - + str << graphType << " " << graphName << " {" << std::endl; str << graphHeader << std::endl; @@ -2093,7 +2131,8 @@ void cmake::GenerateGraphViz(const char* fileName) sprintf(tgtName, "%s%d", graphNodePrefix, cnt++); targetNamesNodes[realTargetName] = tgtName; targetPtrs[realTargetName] = &tit->second; - //str << " \"" << tgtName << "\" [ label=\"" << tit->first.c_str() << "\" shape=\"box\"];" << std::endl; + //str << " \"" << tgtName << "\" [ label=\"" << tit->first.c_str() + //<< "\" shape=\"box\"];" << std::endl; } } // Ok, now find all the stuff we link to that is not in cmake @@ -2103,7 +2142,8 @@ void cmake::GenerateGraphViz(const char* fileName) cmTargets::iterator tit; for ( tit = targets->begin(); tit != targets->end(); ++ tit ) { - const cmTarget::LinkLibraries* ll = &(tit->second.GetOriginalLinkLibraries()); + const cmTarget::LinkLibraries* ll + = &(tit->second.GetOriginalLinkLibraries()); cmTarget::LinkLibraries::const_iterator llit; const char* realTargetName = tit->first.c_str(); if ( ignoreTargetsSet.find(realTargetName) != ignoreTargetsSet.end() ) @@ -2118,7 +2158,8 @@ void cmake::GenerateGraphViz(const char* fileName) for ( llit = ll->begin(); llit != ll->end(); ++ llit ) { const char* libName = llit->first.c_str(); - std::map<cmStdString, cmStdString>::iterator tarIt = targetNamesNodes.find(libName); + std::map<cmStdString, cmStdString>::iterator tarIt + = targetNamesNodes.find(libName); if ( ignoreTargetsSet.find(libName) != ignoreTargetsSet.end() ) { // Skip ignored targets @@ -2129,11 +2170,13 @@ void cmake::GenerateGraphViz(const char* fileName) sprintf(tgtName, "%s%d", graphNodePrefix, cnt++); targetDeps[libName] = 2; targetNamesNodes[libName] = tgtName; - //str << " \"" << tgtName << "\" [ label=\"" << libName << "\" shape=\"ellipse\"];" << std::endl; + //str << " \"" << tgtName << "\" [ label=\"" << libName + //<< "\" shape=\"ellipse\"];" << std::endl; } else { - std::map<cmStdString, int>::iterator depIt = targetDeps.find(libName); + std::map<cmStdString, int>::iterator depIt + = targetDeps.find(libName); if ( depIt == targetDeps.end() ) { targetDeps[libName] = 1; @@ -2148,22 +2191,27 @@ void cmake::GenerateGraphViz(const char* fileName) for ( depIt = targetDeps.begin(); depIt != targetDeps.end(); ++ depIt ) { const char* newTargetName = depIt->first.c_str(); - std::map<cmStdString, cmStdString>::iterator tarIt = targetNamesNodes.find(newTargetName); + std::map<cmStdString, cmStdString>::iterator tarIt + = targetNamesNodes.find(newTargetName); if ( tarIt == targetNamesNodes.end() ) { // We should not be here. - std::cout << __LINE__ << " Cannot find library: " << newTargetName << " even though it was added in the previous pass" << std::endl; + std::cout << __LINE__ << " Cannot find library: " << newTargetName + << " even though it was added in the previous pass" << std::endl; abort(); } - str << " \"" << tarIt->second.c_str() << "\" [ label=\"" << newTargetName << "\" shape=\""; + str << " \"" << tarIt->second.c_str() << "\" [ label=\"" + << newTargetName << "\" shape=\""; if ( depIt->second == 1 ) { - std::map<cmStdString, cmTarget*>::iterator tarTypeIt= targetPtrs.find(newTargetName); + std::map<cmStdString, cmTarget*>::iterator tarTypeIt= targetPtrs.find( + newTargetName); if ( tarTypeIt == targetPtrs.end() ) { // We should not be here. - std::cout << __LINE__ << " Cannot find library: " << newTargetName << " even though it was added in the previous pass" << std::endl; + std::cout << __LINE__ << " Cannot find library: " << newTargetName + << " even though it was added in the previous pass" << std::endl; abort(); } cmTarget* tg = tarTypeIt->second; @@ -2199,31 +2247,38 @@ void cmake::GenerateGraphViz(const char* fileName) cmTargets::iterator tit; for ( tit = targets->begin(); tit != targets->end(); ++ tit ) { - std::map<cmStdString, int>::iterator dependIt = targetDeps.find(tit->first.c_str()); + std::map<cmStdString, int>::iterator dependIt + = targetDeps.find(tit->first.c_str()); if ( dependIt == targetDeps.end() ) { continue; } - std::map<cmStdString, cmStdString>::iterator cmakeTarIt = targetNamesNodes.find(tit->first.c_str()); - const cmTarget::LinkLibraries* ll = &(tit->second.GetOriginalLinkLibraries()); + std::map<cmStdString, cmStdString>::iterator cmakeTarIt + = targetNamesNodes.find(tit->first.c_str()); + const cmTarget::LinkLibraries* ll + = &(tit->second.GetOriginalLinkLibraries()); cmTarget::LinkLibraries::const_iterator llit; for ( llit = ll->begin(); llit != ll->end(); ++ llit ) { const char* libName = llit->first.c_str(); - std::map<cmStdString, cmStdString>::iterator tarIt = targetNamesNodes.find(libName); + std::map<cmStdString, cmStdString>::iterator tarIt + = targetNamesNodes.find(libName); if ( tarIt == targetNamesNodes.end() ) { // We should not be here. - std::cout << __LINE__ << " Cannot find library: " << libName << " even though it was added in the previous pass" << std::endl; + std::cout << __LINE__ << " Cannot find library: " << libName + << " even though it was added in the previous pass" << std::endl; abort(); } - str << " \"" << cmakeTarIt->second.c_str() << "\" -> \"" << tarIt->second.c_str() << "\"" << std::endl; + str << " \"" << cmakeTarIt->second.c_str() << "\" -> \"" + << tarIt->second.c_str() << "\"" << std::endl; } } } // TODO: Use dotted or something for external libraries - //str << " \"node0\":f4 -> \"node12\"[color=\"#0000ff\" style=dotted]" << std::endl; + //str << " \"node0\":f4 -> \"node12\"[color=\"#0000ff\" style=dotted]" + //<< std::endl; // str << "}" << std::endl; } |