From 369308ca767367e5dd68fd783c830fd8a57ec751 Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Wed, 22 Jun 2005 09:06:46 -0400 Subject: ENH: make LOCATION an computed property of the target and get rid of a bunch of const junk --- Source/cmExportLibraryDependencies.cxx | 2 +- Source/cmGlobalGenerator.cxx | 4 +- Source/cmGlobalKdevelopGenerator.cxx | 4 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 22 ++++----- Source/cmGlobalUnixMakefileGenerator3.h | 2 +- Source/cmGlobalVisualStudio6Generator.cxx | 7 ++- Source/cmGlobalVisualStudio6Generator.h | 3 +- Source/cmGlobalVisualStudio71Generator.cxx | 10 ++-- Source/cmGlobalVisualStudio71Generator.h | 6 +-- Source/cmGlobalVisualStudio7Generator.cxx | 11 ++--- Source/cmGlobalVisualStudio7Generator.h | 6 +-- Source/cmLocalGenerator.cxx | 8 +-- Source/cmLocalGenerator.h | 2 +- Source/cmLocalUnixMakefileGenerator3.cxx | 44 ++++++++--------- Source/cmLocalUnixMakefileGenerator3.h | 40 +++++++-------- Source/cmLocalVisualStudio6Generator.cxx | 7 ++- Source/cmLocalVisualStudio6Generator.h | 6 +-- Source/cmLocalVisualStudio7Generator.cxx | 18 +++---- Source/cmLocalVisualStudio7Generator.h | 23 ++++----- Source/cmMakeDepend.cxx | 6 +-- Source/cmMakeDepend.h | 4 +- Source/cmMakefile.cxx | 51 +++---------------- Source/cmMakefile.h | 3 +- Source/cmOrderLinkDirectories.cxx | 2 +- Source/cmOrderLinkDirectories.h | 2 +- Source/cmTarget.cxx | 78 +++++++++++++++++++++++------- Source/cmTarget.h | 75 ++++++++++++++-------------- 27 files changed, 217 insertions(+), 229 deletions(-) diff --git a/Source/cmExportLibraryDependencies.cxx b/Source/cmExportLibraryDependencies.cxx index 78a9485..de55cc4 100644 --- a/Source/cmExportLibraryDependencies.cxx +++ b/Source/cmExportLibraryDependencies.cxx @@ -91,7 +91,7 @@ void cmExportLibraryDependenciesCommand::FinalPass() cmTargets &tgts = gen->GetMakefile()->GetTargets(); std::vector depends; const char *defType; - for(cmTargets::const_iterator l = tgts.begin(); + for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); ++l) { if ((l->second.GetType() != cmTarget::INSTALL_FILES) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index f63fa99..dea33eb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -531,9 +531,9 @@ void cmGlobalGenerator::Configure() { manager = m_LocalGenerators[i]->GetMakefile()->GetCacheManager(); m_LocalGenerators[i]->ConfigureFinalPass(); - cmTargets const& targets = + cmTargets & targets = m_LocalGenerators[i]->GetMakefile()->GetTargets(); - for (cmTargets::const_iterator l = targets.begin(); + for (cmTargets::iterator l = targets.begin(); l != targets.end(); l++) { cmTarget::LinkLibraries libs = l->second.GetLinkLibraries(); diff --git a/Source/cmGlobalKdevelopGenerator.cxx b/Source/cmGlobalKdevelopGenerator.cxx index 7ed9dc6..012262d 100644 --- a/Source/cmGlobalKdevelopGenerator.cxx +++ b/Source/cmGlobalKdevelopGenerator.cxx @@ -78,7 +78,7 @@ void cmGlobalKdevelopGenerator::Generate() //run from kdevelop for now just pick the first executable found std::string executable; cmTargets& targets=mf->GetTargets(); - for (cmTargets::const_iterator ti = targets.begin(); + for (cmTargets::iterator ti = targets.begin(); ti != targets.end(); ti++) { if (ti->second.GetType()==cmTarget::EXECUTABLE) @@ -134,7 +134,7 @@ bool cmGlobalKdevelopGenerator //get all sources cmTargets& targets=makefile->GetTargets(); - for (cmTargets::const_iterator ti = targets.begin(); + for (cmTargets::iterator ti = targets.begin(); ti != targets.end(); ti++) { const std::vector& sources=ti->second.GetSourceFiles(); diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 6ee17e0..d9927a3 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -467,7 +467,7 @@ cmGlobalUnixMakefileGenerator3 std::vector all_tgts; // for all of out targets - for (cmTargets::const_iterator l = lg->GetMakefile()->GetTargets().begin(); + for (cmTargets::iterator l = lg->GetMakefile()->GetTargets().begin(); l != lg->GetMakefile()->GetTargets().end(); l++) { if((l->second.GetType() == cmTarget::EXECUTABLE) || @@ -528,7 +528,7 @@ cmGlobalUnixMakefileGenerator3 std::vector all_tgts; // for all of out targets - for (cmTargets::const_iterator l = lg->GetMakefile()->GetTargets().begin(); + for (cmTargets::iterator l = lg->GetMakefile()->GetTargets().begin(); l != lg->GetMakefile()->GetTargets().end(); l++) { if((l->second.GetType() == cmTarget::EXECUTABLE) || @@ -597,7 +597,7 @@ cmGlobalUnixMakefileGenerator3 std::vector all_tgts; // for all of out targets - for (cmTargets::const_iterator l = lg->GetMakefile()->GetTargets().begin(); + for (cmTargets::iterator l = lg->GetMakefile()->GetTargets().begin(); l != lg->GetMakefile()->GetTargets().end(); l++) { if((l->second.GetType() == cmTarget::EXECUTABLE) || @@ -658,7 +658,7 @@ cmGlobalUnixMakefileGenerator3 std::vector all_tgts; // for all of out targets - for (cmTargets::const_iterator l = lg->GetMakefile()->GetTargets().begin(); + for (cmTargets::iterator l = lg->GetMakefile()->GetTargets().begin(); l != lg->GetMakefile()->GetTargets().end(); l++) { if((l->second.GetType() == cmTarget::EXECUTABLE) || @@ -713,8 +713,8 @@ cmGlobalUnixMakefileGenerator3 depends.push_back("cmake_check_build_system"); // for each target Generate the rule files for each target. - const cmTargets& targets = lg->GetMakefile()->GetTargets(); - for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t) + cmTargets& targets = lg->GetMakefile()->GetTargets(); + for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) { if((t->second.GetType() == cmTarget::EXECUTABLE) || (t->second.GetType() == cmTarget::STATIC_LIBRARY) || @@ -767,9 +767,9 @@ cmGlobalUnixMakefileGenerator3 depends.push_back("cmake_check_build_system"); // for each target Generate the rule files for each target. - const cmTargets& targets = lg->GetMakefile()->GetTargets(); + cmTargets& targets = lg->GetMakefile()->GetTargets(); bool needRequiresStep = this->NeedRequiresStep(lg); - for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t) + for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) { if (((t->second.GetType() == cmTarget::EXECUTABLE) || (t->second.GetType() == cmTarget::STATIC_LIBRARY) || @@ -870,7 +870,7 @@ cmGlobalUnixMakefileGenerator3 void cmGlobalUnixMakefileGenerator3 ::AppendGlobalTargetDepends(std::vector& depends, - const cmTarget& target) + cmTarget& target) { // Keep track of dependencies already listed. std::set emitted; @@ -964,8 +964,8 @@ cmGlobalUnixMakefileGenerator3::WriteHelpRule(std::ostream& ruleFileStream) lg = static_cast(m_LocalGenerators[i]); // for each target Generate the rule files for each target. - const cmTargets& targets = lg->GetMakefile()->GetTargets(); - for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t) + cmTargets& targets = lg->GetMakefile()->GetTargets(); + for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) { if((t->second.GetType() == cmTarget::EXECUTABLE) || (t->second.GetType() == cmTarget::STATIC_LIBRARY) || diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 2de97df..6fc4f5f 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -106,7 +106,7 @@ protected: cmLocalUnixMakefileGenerator3 *lg); void AppendGlobalTargetDepends(std::vector& depends, - const cmTarget& target); + cmTarget& target); void AppendAnyGlobalDepend(std::vector& depends, const char* name); diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx index 79fd4fd..eed2e09 100644 --- a/Source/cmGlobalVisualStudio6Generator.cxx +++ b/Source/cmGlobalVisualStudio6Generator.cxx @@ -247,9 +247,8 @@ void cmGlobalVisualStudio6Generator::WriteDSWFile(std::ostream& fout, unsigned int j; for(j = 0; j < generators.size(); ++j) { - const cmTargets &atgts = - generators[j]->GetMakefile()->GetTargets(); - for(cmTargets::const_iterator al = atgts.begin(); + cmTargets &atgts = generators[j]->GetMakefile()->GetTargets(); + for(cmTargets::iterator al = atgts.begin(); al != atgts.end(); ++al) { if (al->second.IsInAll()) @@ -368,7 +367,7 @@ void cmGlobalVisualStudio6Generator::OutputDSWFile() void cmGlobalVisualStudio6Generator::WriteProject(std::ostream& fout, const char* dspname, const char* dir, - const cmTarget& target) + cmTarget& target) { fout << "#########################################################" "######################\n\n"; diff --git a/Source/cmGlobalVisualStudio6Generator.h b/Source/cmGlobalVisualStudio6Generator.h index 0234ac7..0af3ae6 100644 --- a/Source/cmGlobalVisualStudio6Generator.h +++ b/Source/cmGlobalVisualStudio6Generator.h @@ -79,8 +79,7 @@ private: void WriteDSWFile(std::ostream& fout); void WriteDSWHeader(std::ostream& fout); void WriteProject(std::ostream& fout, - const char* name, const char* path, - const cmTarget &t); + const char* name, const char* path, cmTarget &t); void WriteExternalProject(std::ostream& fout, const char* name, const char* path, const std::vector& dependencies); diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx index 455ae4a..bba2ae5 100644 --- a/Source/cmGlobalVisualStudio71Generator.cxx +++ b/Source/cmGlobalVisualStudio71Generator.cxx @@ -96,9 +96,8 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout, unsigned int j; for(j = 0; j < generators.size(); ++j) { - const cmTargets &atgts = - generators[j]->GetMakefile()->GetTargets(); - for(cmTargets::const_iterator al = atgts.begin(); + cmTargets &atgts = generators[j]->GetMakefile()->GetTargets(); + for(cmTargets::iterator al = atgts.begin(); al != atgts.end(); ++al) { if (al->second.IsInAll()) @@ -229,7 +228,7 @@ void cmGlobalVisualStudio71Generator::WriteProject(std::ostream& fout, const char* dspname, const char* dir, - const cmTarget& t) + cmTarget& t) { std::string d = cmSystemTools::ConvertToOutputPath(dir); fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" @@ -252,8 +251,7 @@ void cmGlobalVisualStudio71Generator ::WriteProjectDepends(std::ostream& fout, const char* dspname, - const char*, - const cmTarget& target) + const char*, cmTarget& target) { // insert Begin Project Dependency Project_Dep_Name project stuff here if (target.GetType() != cmTarget::STATIC_LIBRARY) diff --git a/Source/cmGlobalVisualStudio71Generator.h b/Source/cmGlobalVisualStudio71Generator.h index a5a47a8..e1ff825 100644 --- a/Source/cmGlobalVisualStudio71Generator.h +++ b/Source/cmGlobalVisualStudio71Generator.h @@ -47,11 +47,9 @@ protected: cmLocalGenerator* root, std::vector& generators); virtual void WriteProject(std::ostream& fout, - const char* name, const char* path, - const cmTarget &t); + const char* name, const char* path, cmTarget &t); virtual void WriteProjectDepends(std::ostream& fout, - const char* name, const char* path, - const cmTarget &t); + const char* name, const char* path, cmTarget &t); virtual void WriteProjectConfigurations(std::ostream& fout, const char* name, bool in_all); virtual void WriteExternalProject(std::ostream& fout, const char* name, const char* path, const std::vector& depends); diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index a604485..34ae9a2 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -312,9 +312,8 @@ void cmGlobalVisualStudio7Generator::WriteSLNFile(std::ostream& fout, unsigned int j; for(j = 0; j < generators.size(); ++j) { - const cmTargets &atgts = - generators[j]->GetMakefile()->GetTargets(); - for(cmTargets::const_iterator al = atgts.begin(); + cmTargets &atgts = generators[j]->GetMakefile()->GetTargets(); + for(cmTargets::iterator al = atgts.begin(); al != atgts.end(); ++al) { if (al->second.IsInAll()) @@ -498,8 +497,7 @@ void cmGlobalVisualStudio7Generator::WriteSLNFile(std::ostream& fout, // the libraries it uses are also done here void cmGlobalVisualStudio7Generator::WriteProject(std::ostream& fout, const char* dspname, - const char* dir, - const cmTarget&) + const char* dir, cmTarget&) { std::string d = cmSystemTools::ConvertToOutputPath(dir); fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" @@ -517,8 +515,7 @@ void cmGlobalVisualStudio7Generator ::WriteProjectDepends(std::ostream& fout, const char* dspname, - const char*, - const cmTarget& target) + const char*, cmTarget& target) { int depcount = 0; // insert Begin Project Dependency Project_Dep_Name project stuff here diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index 6396971..93d697d 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -86,11 +86,9 @@ protected: virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root, std::vector& generators); virtual void WriteProject(std::ostream& fout, - const char* name, const char* path, - const cmTarget &t); + const char* name, const char* path, cmTarget &t); virtual void WriteProjectDepends(std::ostream& fout, - const char* name, const char* path, - const cmTarget &t); + const char* name, const char* path, cmTarget &t); virtual void WriteProjectConfigurations(std::ostream& fout, const char* name, bool in_all); virtual void WriteSLNFooter(std::ostream& fout); virtual void WriteSLNHeader(std::ostream& fout); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index b8267d6..9bf4770 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -190,7 +190,7 @@ void cmLocalGenerator::GenerateTestFiles() void cmLocalGenerator::GenerateInstallRules() { - const cmTargets &tgts = m_Makefile->GetTargets(); + cmTargets &tgts = m_Makefile->GetTargets(); const char* prefix = m_Makefile->GetDefinition("CMAKE_INSTALL_PREFIX"); #if defined(_WIN32) && !defined(__CYGWIN__) @@ -283,7 +283,7 @@ void cmLocalGenerator::GenerateInstallRules() } std::string destination; - for(cmTargets::const_iterator l = tgts.begin(); + for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++) { const char* preinstall = l->second.GetProperty("PRE_INSTALL_SCRIPT"); @@ -1164,8 +1164,8 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, * to the name of the library. This will not link a library against itself. */ void cmLocalGenerator::OutputLinkLibraries(std::ostream& fout, - const char* targetLibrary, - const cmTarget &tgt) + const char* targetLibrary, + cmTarget &tgt) { // Try to emit each search path once std::set emitted; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 9a25b95..b5809fd 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -154,7 +154,7 @@ protected: cmTarget&target); ///! put all the libraries for a target on into the given stream - virtual void OutputLinkLibraries(std::ostream&, const char* name, const cmTarget &); + virtual void OutputLinkLibraries(std::ostream&, const char* name,cmTarget &); /** Get the include flags for the current makefile and language. */ diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 54e6cb3..69ded21 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -160,7 +160,7 @@ void cmLocalUnixMakefileGenerator3::FormatOutputPath(std::string& path, void cmLocalUnixMakefileGenerator3 -::WriteCustomCommands(const cmTarget &target,std::ostream& ruleFileStream, +::WriteCustomCommands(cmTarget &target,std::ostream& ruleFileStream, std::vector& cleanFiles) { std::string tgtDir = m_Makefile->GetStartOutputDirectory(); @@ -303,7 +303,7 @@ const std::string &cmLocalUnixMakefileGenerator3::GetHomeRelativeOutputPath() //---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 -::WriteTargetRuleFiles(const cmTarget& target) +::WriteTargetRuleFiles(cmTarget& target) { // Create a directory for this target. std::string dir = this->GetTargetDirectory(target); @@ -496,7 +496,7 @@ void cmLocalUnixMakefileGenerator3 ::WriteObjectBuildFile(std::string &obj, const char *lang, - const cmTarget& target, + cmTarget& target, const cmSourceFile& source, std::vector& depends, std::string &depMakeFile) @@ -649,7 +649,7 @@ cmLocalUnixMakefileGenerator3 //---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 -::WriteObjectRuleFiles(const cmTarget& target, const cmSourceFile& source, +::WriteObjectRuleFiles(cmTarget& target, const cmSourceFile& source, std::vector& objects) { // Identify the language of the source file. @@ -771,7 +771,7 @@ cmLocalUnixMakefileGenerator3 //---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 -::WriteUtilityRuleFiles(const cmTarget& target) +::WriteUtilityRuleFiles(cmTarget& target) { // Create a directory for this target. std::string dir = this->GetTargetDirectory(target); @@ -1253,7 +1253,7 @@ cmLocalUnixMakefileGenerator3 //---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 -::WriteTargetRequiresRule(std::ostream& ruleFileStream, const cmTarget& target, +::WriteTargetRequiresRule(std::ostream& ruleFileStream, cmTarget& target, const std::vector& objects) { std::vector depends; @@ -1285,7 +1285,7 @@ void cmLocalUnixMakefileGenerator3 ::WriteExecutableRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles) @@ -1468,7 +1468,7 @@ void cmLocalUnixMakefileGenerator3 ::WriteStaticLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles) @@ -1494,7 +1494,7 @@ void cmLocalUnixMakefileGenerator3 ::WriteSharedLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles) @@ -1536,7 +1536,7 @@ void cmLocalUnixMakefileGenerator3 ::WriteModuleLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles) @@ -1564,7 +1564,7 @@ void cmLocalUnixMakefileGenerator3 ::WriteLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, const char* linkRuleVar, @@ -1793,7 +1793,7 @@ cmLocalUnixMakefileGenerator3 void cmLocalUnixMakefileGenerator3 ::WriteObjectsVariable(std::ostream& ruleFileStream, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::string& variableName, @@ -1844,7 +1844,7 @@ cmLocalUnixMakefileGenerator3 void cmLocalUnixMakefileGenerator3 ::WriteTargetDependRule(std::ostream& ruleFileStream, - const cmTarget& target, + cmTarget& target, const std::vector& objects) { std::vector depends; @@ -1875,7 +1875,7 @@ cmLocalUnixMakefileGenerator3 void cmLocalUnixMakefileGenerator3 ::WriteTargetCleanRule(std::ostream& ruleFileStream, - const cmTarget& target, + cmTarget& target, const std::vector& files) { std::vector no_depends; @@ -1922,7 +1922,7 @@ cmLocalUnixMakefileGenerator3 //---------------------------------------------------------------------------- std::string -cmLocalUnixMakefileGenerator3::GetTargetDirectory(const cmTarget& target) +cmLocalUnixMakefileGenerator3::GetTargetDirectory(cmTarget& target) { std::string dir = target.GetName(); dir += ".dir"; @@ -1931,7 +1931,7 @@ cmLocalUnixMakefileGenerator3::GetTargetDirectory(const cmTarget& target) //---------------------------------------------------------------------------- std::string -cmLocalUnixMakefileGenerator3::GetRelativeTargetDirectory(const cmTarget& target) +cmLocalUnixMakefileGenerator3::GetRelativeTargetDirectory(cmTarget& target) { std::string dir = m_Makefile->GetStartOutputDirectory(); dir += "/"; @@ -1978,7 +1978,7 @@ cmLocalUnixMakefileGenerator3 //---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 -::GetObjectFileName(const cmTarget& target, +::GetObjectFileName(cmTarget& target, const cmSourceFile& source) { // If the full path to the source file includes this directory, @@ -2087,7 +2087,7 @@ cmLocalUnixMakefileGenerator3::ConvertToQuotedOutputPath(const char* p) void cmLocalUnixMakefileGenerator3 ::AppendTargetDepends(std::vector& depends, - const cmTarget& target) + cmTarget& target) { // Do not bother with dependencies for static libraries. if(target.GetType() == cmTarget::STATIC_LIBRARY) @@ -2799,13 +2799,13 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile() // now write out the object rules // for each object file name - for (std::map >::iterator lo = + for (std::map >::iterator lo = m_LocalObjectFiles.begin(); lo != m_LocalObjectFiles.end(); ++lo) { commands.clear(); // for each target using the object file - for (std::vector::iterator to = + for (std::vector::iterator to = lo->second.begin(); to != lo->second.end(); ++to) { std::string tgtMakefileName = this->GetRelativeTargetDirectory(**to); @@ -2829,9 +2829,9 @@ void cmLocalUnixMakefileGenerator3 // for each target we just provide a rule to cd up to the top and do a make // on the target - const cmTargets& targets = m_Makefile->GetTargets(); + cmTargets& targets = m_Makefile->GetTargets(); std::string localName; - for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t) + for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) { if((t->second.GetType() == cmTarget::EXECUTABLE) || (t->second.GetType() == cmTarget::STATIC_LIBRARY) || diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 4ee0ea1..826b053 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -135,7 +135,7 @@ public: void WriteSpecialTargetsTop(std::ostream& makefileStream); void WriteSpecialTargetsBottom(std::ostream& makefileStream); - std::string GetRelativeTargetDirectory(const cmTarget& target); + std::string GetRelativeTargetDirectory(cmTarget& target); // List the files for which to check dependency integrity. Each // language has its own list because integrity may be checked @@ -145,10 +145,10 @@ public: { return m_CheckDependFiles;} void AppendTargetDepends(std::vector& depends, - const cmTarget& target); + cmTarget& target); void AppendGlobalTargetDepends(std::vector& depends, - const cmTarget& target); + cmTarget& target); void AppendEcho(std::vector& commands, const char* text); @@ -174,7 +174,7 @@ protected: // this is responsible for writing all of the rules for all this // directories custom commands (but not utility targets) - void WriteCustomCommands(const cmTarget &target,std::ostream& os, + void WriteCustomCommands(cmTarget &target,std::ostream& os, std::vector& cleanFiles); // this method Writes the Directory informaiton files @@ -187,18 +187,18 @@ protected: void WriteCMakeArgument(std::ostream& os, const char* s); // write out all the rules for this target - void WriteTargetRuleFiles(const cmTarget& target); - void WriteUtilityRuleFiles(const cmTarget& target); + void WriteTargetRuleFiles(cmTarget& target); + void WriteUtilityRuleFiles(cmTarget& target); // create the rule files for an object - void WriteObjectRuleFiles(const cmTarget& target, + void WriteObjectRuleFiles(cmTarget& target, const cmSourceFile& source, std::vector& objects); // write the build rule for an object void WriteObjectBuildFile(std::string &obj, const char *lang, - const cmTarget& target, + cmTarget& target, const cmSourceFile& source, std::vector& depends, std::string &depMakeFile); @@ -230,21 +230,21 @@ protected: // these three make some simple changes and then call WriteLibraryRule void WriteStaticLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles); void WriteSharedLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles); void WriteModuleLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles); @@ -252,7 +252,7 @@ protected: // the main code for writing the Executable target rules void WriteExecutableRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::vector& cleanFiles); @@ -260,7 +260,7 @@ protected: // the main method for writing library rules void WriteLibraryRule(std::ostream& ruleFileStream, const char* ruleFileName, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, const char* linkRuleVar, @@ -278,24 +278,24 @@ protected: const char* realTarget, const char* helpTarget); void WriteObjectsVariable(std::ostream& ruleFileStream, - const cmTarget& target, + cmTarget& target, const std::vector& objects, const std::vector& external_objects, std::string& variableName, std::string& variableNameExternal); void WriteTargetDependRule(std::ostream& ruleFileStream, - const cmTarget& target, + cmTarget& target, const std::vector& objects); void WriteTargetCleanRule(std::ostream& ruleFileStream, - const cmTarget& target, + cmTarget& target, const std::vector& files); void WriteTargetRequiresRule(std::ostream& ruleFileStream, - const cmTarget& target, + cmTarget& target, const std::vector& objects); - std::string GetTargetDirectory(const cmTarget& target); + std::string GetTargetDirectory(cmTarget& target); std::string GetSubdirTargetName(const char* pass, const char* subdir); - std::string GetObjectFileName(const cmTarget& target, + std::string GetObjectFileName(cmTarget& target, const cmSourceFile& source); const char* GetSourceFileLanguage(const cmSourceFile& source); std::string ConvertToQuotedOutputPath(const char* p); @@ -347,7 +347,7 @@ private: // Set of object file names that will be built in this directory. std::set m_ObjectFiles; - std::map > m_LocalObjectFiles; + std::map > m_LocalObjectFiles; }; #endif diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index dfb1ca5..8ac9e7b 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -562,7 +562,7 @@ void cmLocalVisualStudio6Generator::WriteDSPEndGroup(std::ostream& fout) void cmLocalVisualStudio6Generator::SetBuildType(BuildType b, const char* libName, - const cmTarget& target) + cmTarget& target) { std::string root= m_Makefile->GetRequiredDefinition("CMAKE_ROOT"); const char *def= m_Makefile->GetDefinition( "MSPROJECT_TEMPLATE_DIRECTORY"); @@ -640,7 +640,7 @@ void cmLocalVisualStudio6Generator::SetBuildType(BuildType b, // look for custom rules on a target and collect them together std::string -cmLocalVisualStudio6Generator::CreateTargetRules(const cmTarget &target, +cmLocalVisualStudio6Generator::CreateTargetRules(cmTarget &target, const char * /* libName */) { std::string customRuleCode = ""; @@ -741,8 +741,7 @@ inline std::string removeQuotes(const std::string& s) void cmLocalVisualStudio6Generator ::WriteDSPHeader(std::ostream& fout, - const char *libName, - const cmTarget &target, + const char *libName, cmTarget &target, std::vector &) { std::set pathEmitted; diff --git a/Source/cmLocalVisualStudio6Generator.h b/Source/cmLocalVisualStudio6Generator.h index c96deb0..bf09f5c 100644 --- a/Source/cmLocalVisualStudio6Generator.h +++ b/Source/cmLocalVisualStudio6Generator.h @@ -51,7 +51,7 @@ public: /** * Specify the type of the build: static, dll, or executable. */ - void SetBuildType(BuildType, const char* libName, const cmTarget&); + void SetBuildType(BuildType, const char* libName, cmTarget&); /** * Return array of created DSP names in a STL vector. @@ -76,7 +76,7 @@ private: void WriteDSPEndGroup(std::ostream& fout); void WriteDSPHeader(std::ostream& fout, const char *libName, - const cmTarget &tgt, std::vector &sgs); + cmTarget &tgt, std::vector &sgs); void WriteDSPFooter(std::ostream& fout); void AddDSPBuildRule(); @@ -91,7 +91,7 @@ private: std::vector& depends, const cmCustomCommandLines& commandLines); - std::string CreateTargetRules(const cmTarget &target, + std::string CreateTargetRules(cmTarget &target, const char *libName); std::string m_IncludeOptions; std::vector m_Configurations; diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 3760893..d081d20 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -183,7 +183,7 @@ void cmLocalVisualStudio7Generator::AddVCProjBuildRule() void cmLocalVisualStudio7Generator::WriteConfigurations(std::ostream& fout, const char *libName, - const cmTarget &target) + cmTarget &target) { std::vector *configs = static_cast(m_GlobalGenerator)->GetConfigurations(); @@ -287,7 +287,7 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorLinkFlagTable[] = void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, const char* configName, const char *libName, - const cmTarget &target) + cmTarget &target) { // create a map of xml tags to the values they should have in the output // for example, "BufferSecurityCheck" = "TRUE" @@ -576,7 +576,7 @@ void cmLocalVisualStudio7Generator::FillFlagMapFromCommandFlags( void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, const char* configName, const char *libName, - const cmTarget &target) + cmTarget &target) { std::string temp; std::string debugPostfix = ""; @@ -794,7 +794,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, } void cmLocalVisualStudio7Generator::OutputModuleDefinitionFile(std::ostream& fout, - const cmTarget &target) + cmTarget &target) { std::vector const& classes = target.GetSourceFiles(); for(std::vector::const_iterator i = classes.begin(); @@ -814,7 +814,7 @@ void cmLocalVisualStudio7Generator::OutputModuleDefinitionFile(std::ostream& fou void cmLocalVisualStudio7Generator::OutputLibraryDirectories(std::ostream& fout, const char*, const char*, - const cmTarget &tgt) + cmTarget &tgt) { bool hasone = false; if(m_LibraryOutputPath.size()) @@ -867,7 +867,7 @@ void cmLocalVisualStudio7Generator::OutputLibraryDirectories(std::ostream& fout, void cmLocalVisualStudio7Generator::OutputLibraries(std::ostream& fout, const char* configName, const char* libName, - const cmTarget &target) + cmTarget &target) { const cmTarget::LinkLibraries& libs = target.GetLinkLibraries(); cmTarget::LinkLibraries::const_iterator j; @@ -1224,8 +1224,8 @@ void cmLocalVisualStudio7Generator::WriteVCProjEndGroup(std::ostream& fout) // look for custom rules on a target and collect them together void cmLocalVisualStudio7Generator::OutputTargetRules(std::ostream& fout, - const cmTarget &target, - const char * /* libName */) + cmTarget &target, + const char * /*libName*/) { if (target.GetType() > cmTarget::UTILITY) { @@ -1299,7 +1299,7 @@ void cmLocalVisualStudio7Generator::OutputTargetRules(std::ostream& fout, void cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout, const char *libName, - const cmTarget &, + cmTarget &, std::vector &) { fout << "\n" diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index 0821d36..c8cd0ed 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h @@ -69,41 +69,36 @@ private: std::string& flags); void OutputVCProjFile(); void WriteVCProjHeader(std::ostream& fout, const char *libName, - const cmTarget &tgt, std::vector &sgs); + cmTarget &tgt, std::vector &sgs); void WriteVCProjFooter(std::ostream& fout); void CreateSingleVCProj(const char *lname, cmTarget &tgt); void WriteVCProjFile(std::ostream& fout, const char *libName, cmTarget &tgt); void AddVCProjBuildRule(); void WriteConfigurations(std::ostream& fout, - const char *libName, - const cmTarget &tgt); + const char *libName, cmTarget &tgt); void WriteConfiguration(std::ostream& fout, const char* configName, - const char* libName, - const cmTarget &tgt); + const char* libName, cmTarget &tgt); std::string EscapeForXML(const char* s); std::string ConvertToXMLOutputPath(const char* path); std::string ConvertToXMLOutputPathSingle(const char* path); void OutputDefineFlags(const char* flags, std::ostream& fout); - void OutputTargetRules(std::ostream& fout, - const cmTarget &target, + void OutputTargetRules(std::ostream& fout, cmTarget &target, const char *libName); void OutputBuildTool(std::ostream& fout, const char* configName, - const char* libname, const cmTarget& t); + const char* libname, cmTarget& t); void OutputLibraries(std::ostream& fout, const char* configName, const char* libName, - const cmTarget &target); + cmTarget &target); void OutputLibraryDirectories(std::ostream& fout, const char* configName, - const char* libName, - const cmTarget &target); - void OutputModuleDefinitionFile(std::ostream& fout, - const cmTarget &target); + const char* libName, cmTarget &target); + void OutputModuleDefinitionFile(std::ostream& fout, cmTarget &target); void WriteProjectStart(std::ostream& fout, const char *libName, - const cmTarget &tgt, std::vector &sgs); + cmTarget &tgt, std::vector &sgs); void WriteVCProjBeginGroup(std::ostream& fout, const char* group, const char* filter); diff --git a/Source/cmMakeDepend.cxx b/Source/cmMakeDepend.cxx index 077bd19..02795eb 100644 --- a/Source/cmMakeDepend.cxx +++ b/Source/cmMakeDepend.cxx @@ -49,7 +49,7 @@ cmMakeDepend::~cmMakeDepend() // The pointer is kept so the cmSourceFile array can // be updated with the depend information in the cmMakefile. -void cmMakeDepend::SetMakefile(const cmMakefile* makefile) +void cmMakeDepend::SetMakefile(cmMakefile* makefile) { m_Makefile = makefile; @@ -264,8 +264,8 @@ cmDependInformation* cmMakeDepend::GetDependInformation(const char* file, void cmMakeDepend::GenerateMakefileDependencies() { // Now create cmDependInformation objects for files in the directory - const cmTargets &tgts = m_Makefile->GetTargets(); - for(cmTargets::const_iterator l = tgts.begin(); + cmTargets &tgts = m_Makefile->GetTargets(); + for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++) { const std::vector &classes = l->second.GetSourceFiles(); diff --git a/Source/cmMakeDepend.h b/Source/cmMakeDepend.h index 15ebc77..2a2e719 100644 --- a/Source/cmMakeDepend.h +++ b/Source/cmMakeDepend.h @@ -94,7 +94,7 @@ public: /** * Set the makefile that is used as a source of classes. */ - virtual void SetMakefile(const cmMakefile* makefile); + virtual void SetMakefile(cmMakefile* makefile); /** * Get the depend info struct for a source file @@ -153,7 +153,7 @@ protected: */ std::string FullPath(const char *filename, const char *extraPath); - const cmMakefile* m_Makefile; + cmMakefile* m_Makefile; bool m_Verbose; cmsys::RegularExpression m_IncludeFileRegularExpression; cmsys::RegularExpression m_ComplainFileRegularExpression; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index fdc5aa2..ba57c3e 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -179,13 +179,13 @@ void cmMakefile::PrintStringVector(const char* s, const std::vectorfirst << std::endl; @@ -1078,10 +1078,10 @@ void cmMakefile::AddLibrary(const char* lname, int shared, target.ClearDependencyInformation( *this, lname ); target.SetInAll(true); target.GetSourceLists() = srcs; + target.SetMakefile(this); this->AddGlobalLinkInformation(lname, target); - cmTargets::iterator it = - m_Targets.insert(cmTargets::value_type(lname,target)).first; - + m_Targets.insert(cmTargets::value_type(lname,target)); + // Add an entry into the cache std::string libPath = lname; libPath += "_CMAKE_PATH"; @@ -1090,26 +1090,6 @@ void cmMakefile::AddLibrary(const char* lname, int shared, this->GetCurrentOutputDirectory(), "Path to a library", cmCacheManager::INTERNAL); - // set the LOCATION property of the target - std::string target_location; - target_location = this->GetSafeDefinition("LIBRARY_OUTPUT_PATH"); - if ( target_location.size() == 0 ) - { - target_location += this->GetCurrentOutputDirectory(); - } - if ( target_location.size() > 0 ) - { - target_location += "/"; - } - const char* cfgid = this->GetDefinition("CMAKE_CFG_INTDIR"); - if ( cfgid && strcmp(cfgid, ".") != 0 ) - { - target_location += cfgid; - target_location += "/"; - } - target_location += target.GetFullName(this); - it->second.SetProperty("LOCATION",target_location.c_str()); - // Add an entry into the cache std::string ltname = lname; ltname += "_LIBRARY_TYPE"; @@ -1150,30 +1130,11 @@ cmTarget* cmMakefile::AddExecutable(const char *exeName, target.SetType(cmTarget::EXECUTABLE, exeName); target.SetInAll(true); target.GetSourceLists() = srcs; + target.SetMakefile(this); this->AddGlobalLinkInformation(exeName, target); cmTargets::iterator it = m_Targets.insert(cmTargets::value_type(exeName,target)).first; - // set the LOCATION property of the target - std::string target_location; - target_location = this->GetSafeDefinition("EXECUTABLE_OUTPUT_PATH"); - if ( target_location.size() == 0 ) - { - target_location += this->GetCurrentOutputDirectory(); - } - if ( target_location.size() > 0 ) - { - target_location += "/"; - } - const char* cfgid = this->GetDefinition("CMAKE_CFG_INTDIR"); - if ( cfgid && strcmp(cfgid, ".") != 0 ) - { - target_location += cfgid; - target_location += "/"; - } - target_location += target.GetFullName(this); - it->second.SetProperty("LOCATION",target_location.c_str()); - // Add an entry into the cache std::string exePath = exeName; exePath += "_CMAKE_PATH"; diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 73c63aa..1eaa42d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -131,7 +131,7 @@ public: /** * Print the object state to std::cout. */ - void Print() const; + void Print(); /** Add a custom command to the build. */ void AddCustomCommandToTarget(const char* target, @@ -417,7 +417,6 @@ public: * Get the list of targets */ cmTargets &GetTargets() { return m_Targets; } - const cmTargets &GetTargets() const { return m_Targets; } cmTarget* FindTarget(const char* name); diff --git a/Source/cmOrderLinkDirectories.cxx b/Source/cmOrderLinkDirectories.cxx index 66eb95f..afc7a5c 100644 --- a/Source/cmOrderLinkDirectories.cxx +++ b/Source/cmOrderLinkDirectories.cxx @@ -214,7 +214,7 @@ void cmOrderLinkDirectories::OrderPaths(std::vector& } //------------------------------------------------------------------- -void cmOrderLinkDirectories::SetLinkInformation(const cmTarget& target, +void cmOrderLinkDirectories::SetLinkInformation(cmTarget& target, cmTarget::LinkLibraryType linktype, const char* targetLibrary) diff --git a/Source/cmOrderLinkDirectories.h b/Source/cmOrderLinkDirectories.h index 7d807f2..6fdf3de 100644 --- a/Source/cmOrderLinkDirectories.h +++ b/Source/cmOrderLinkDirectories.h @@ -49,7 +49,7 @@ class cmOrderLinkDirectories public: cmOrderLinkDirectories(); ///! set link information from the target - void SetLinkInformation(const cmTarget&, cmTarget::LinkLibraryType, + void SetLinkInformation(cmTarget&, cmTarget::LinkLibraryType, const char* targetLibrary); ///! Compute the best order for -L paths from GetLinkLibraries bool DetermineLibraryPathOrder(); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 921a371..dfdde50 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -554,14 +554,14 @@ cmTarget::AnalyzeLibDependencies( const cmMakefile& mf ) void cmTarget::InsertDependency( DependencyMap& depMap, const cmStdString& lib, - const cmStdString& dep ) const + const cmStdString& dep ) { depMap[lib].push_back(dep); } void cmTarget::DeleteDependency( DependencyMap& depMap, const cmStdString& lib, - const cmStdString& dep ) const + const cmStdString& dep ) { // Make sure there is an entry in the map for lib. If so, delete all // dependencies to dep. There may be repeated entries because of @@ -582,7 +582,7 @@ void cmTarget::Emit( const std::string& lib, const DependencyMap& dep_map, std::set& emitted, std::set& visited, - std::vector& link_line ) const + std::vector& link_line ) { // It's already been emitted if( emitted.find(lib) != emitted.end() ) @@ -691,8 +691,52 @@ void cmTarget::SetProperty(const char* prop, const char* value) m_Properties[prop] = value; } -const char *cmTarget::GetProperty(const char* prop) const +void cmTarget::UpdateLocation() { + // set the LOCATION property of the target + std::string target_location; + switch( this->GetType() ) + { + case cmTarget::STATIC_LIBRARY: + case cmTarget::MODULE_LIBRARY: + case cmTarget::SHARED_LIBRARY: + target_location = + m_Makefile->GetSafeDefinition("LIBRARY_OUTPUT_PATH"); + break; + case cmTarget::EXECUTABLE: + target_location = + m_Makefile->GetSafeDefinition("EXECUTABLE_OUTPUT_PATH"); + break; + default: + return; + } + if ( target_location.size() == 0 ) + { + target_location += m_Makefile->GetCurrentOutputDirectory(); + } + if ( target_location.size() > 0 ) + { + target_location += "/"; + } + const char* cfgid = m_Makefile->GetDefinition("CMAKE_CFG_INTDIR"); + if ( cfgid && strcmp(cfgid, ".") != 0 ) + { + target_location += cfgid; + target_location += "/"; + } + target_location += this->GetFullName(m_Makefile); + this->SetProperty("LOCATION",target_location.c_str()); +} + +const char *cmTarget::GetProperty(const char* prop) +{ + // watch for special "computed" properties that are dependent on other + // properties or variables, always recompute them + if (!strcmp(prop,"LOCATION")) + { + this->UpdateLocation(); + } + std::map::const_iterator i = m_Properties.find(prop); if (i != m_Properties.end()) @@ -702,7 +746,7 @@ const char *cmTarget::GetProperty(const char* prop) const return 0; } -bool cmTarget::GetPropertyAsBool(const char* prop) const +bool cmTarget::GetPropertyAsBool(const char* prop) { std::map::const_iterator i = m_Properties.find(prop); @@ -713,7 +757,7 @@ bool cmTarget::GetPropertyAsBool(const char* prop) const return false; } -const char* cmTarget::GetLinkerLanguage(cmGlobalGenerator* gg) const +const char* cmTarget::GetLinkerLanguage(cmGlobalGenerator* gg) { if(this->GetProperty("HAS_CXX")) { @@ -795,12 +839,12 @@ const char* cmTarget::GetCreateRuleVariable() return ""; } -const char* cmTarget::GetSuffixVariable() const +const char* cmTarget::GetSuffixVariable() { return this->GetSuffixVariableInternal(this->GetType()); } -const char* cmTarget::GetSuffixVariableInternal(TargetType type) const +const char* cmTarget::GetSuffixVariableInternal(TargetType type) { switch(type) { @@ -821,12 +865,12 @@ const char* cmTarget::GetSuffixVariableInternal(TargetType type) const } -const char* cmTarget::GetPrefixVariable() const +const char* cmTarget::GetPrefixVariable() { return this->GetPrefixVariableInternal(this->GetType()); } -const char* cmTarget::GetPrefixVariableInternal(TargetType type) const +const char* cmTarget::GetPrefixVariableInternal(TargetType type) { switch(type) { @@ -846,13 +890,13 @@ const char* cmTarget::GetPrefixVariableInternal(TargetType type) const return ""; } -std::string cmTarget::GetFullName(cmMakefile* mf) const +std::string cmTarget::GetFullName(cmMakefile* mf) { return this->GetFullNameInternal(mf, this->GetType()); } std::string cmTarget::GetFullNameInternal(cmMakefile* mf, - TargetType type) const + TargetType type) { const char* targetPrefix = this->GetProperty("PREFIX"); const char* targetSuffix = this->GetProperty("SUFFIX"); @@ -896,13 +940,13 @@ std::string cmTarget::GetFullNameInternal(cmMakefile* mf, return name; } -std::string cmTarget::GetBaseName(cmMakefile* mf) const +std::string cmTarget::GetBaseName(cmMakefile* mf) { return this->GetBaseNameInternal(mf, this->GetType()); } std::string -cmTarget::GetBaseNameInternal(cmMakefile* mf, TargetType type) const +cmTarget::GetBaseNameInternal(cmMakefile* mf, TargetType type) { std::string pathPrefix = ""; #ifdef __APPLE__ @@ -942,7 +986,7 @@ void cmTarget::GetLibraryNames(cmMakefile* mf, std::string& name, std::string& soName, std::string& realName, - std::string& baseName) const + std::string& baseName) { // Get the names based on the real type of the library. this->GetLibraryNamesInternal(mf, name, soName, realName, this->GetType()); @@ -955,7 +999,7 @@ void cmTarget::GetLibraryCleanNames(cmMakefile* mf, std::string& staticName, std::string& sharedName, std::string& sharedSOName, - std::string& sharedRealName) const + std::string& sharedRealName) { // Get the name as if this were a static library. std::string soName; @@ -986,7 +1030,7 @@ void cmTarget::GetLibraryNamesInternal(cmMakefile* mf, std::string& name, std::string& soName, std::string& realName, - TargetType type) const + TargetType type) { // Construct the name of the soname flag variable for this language. const char* ll = diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 12fc440..17961fe 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -41,7 +41,7 @@ public: /** * Return the type of target. */ - TargetType GetType() const + TargetType GetType() { return m_TargetType; } @@ -52,43 +52,36 @@ public: void SetType(TargetType f, const char* name); ///! Set/Get the name of the target - const char* GetName() const {return m_Name.c_str();} + const char* GetName() {return m_Name.c_str();} /** * Indicate whether the target is part of the all target */ - bool IsInAll() const { return this->GetPropertyAsBool("IN_ALL"); } - bool GetInAll() const { return this->GetPropertyAsBool("IN_ALL"); } - void SetInAll(bool f) { this->SetProperty("IN_ALL", (f) ? "TRUE" : "FALSE"); } + bool IsInAll() { return this->GetPropertyAsBool("IN_ALL"); } + bool GetInAll() { return this->GetPropertyAsBool("IN_ALL"); } + void SetInAll(bool f) { this->SetProperty("IN_ALL", (f) ?"TRUE" : "FALSE"); } + + ///! Set the cmMakefile that owns this target + void SetMakefile(cmMakefile *mf) { m_Makefile = mf; }; /** * Get the list of the custom commands for this target */ - const std::vector &GetPreBuildCommands() const - {return m_PreBuildCommands;} std::vector &GetPreBuildCommands() {return m_PreBuildCommands;} - const std::vector &GetPreLinkCommands() const - {return m_PreLinkCommands;} std::vector &GetPreLinkCommands() {return m_PreLinkCommands;} - const std::vector &GetPostBuildCommands() const - {return m_PostBuildCommands;} std::vector &GetPostBuildCommands() {return m_PostBuildCommands;} /** * Get the list of the source lists used by this target */ - const std::vector &GetSourceLists() const - {return m_SourceLists;} std::vector &GetSourceLists() {return m_SourceLists;} /** * Get the list of the source files used by this target */ - const std::vector &GetSourceFiles() const - {return m_SourceFiles;} std::vector &GetSourceFiles() {return m_SourceFiles;} /** @@ -96,7 +89,7 @@ public: */ enum LinkLibraryType {GENERAL, DEBUG, OPTIMIZED}; typedef std::vector > LinkLibraries; - const LinkLibraries &GetLinkLibraries() const {return m_LinkLibraries;} + const LinkLibraries &GetLinkLibraries() {return m_LinkLibraries;} /** * Clear the dependency information recorded for this target, if any. @@ -112,7 +105,8 @@ public: void MergeLinkLibraries( cmMakefile& mf, const char* selfname, const LinkLibraries& libs ); - const std::vector& GetLinkDirectories() const {return m_LinkDirectories;} + const std::vector& GetLinkDirectories() + {return m_LinkDirectories;} void AddLinkDirectory(const char* d); @@ -120,14 +114,14 @@ public: * Set the path where this target should be installed. This is relative to * INSTALL_PREFIX */ - std::string GetInstallPath() const {return m_InstallPath;} + std::string GetInstallPath() {return m_InstallPath;} void SetInstallPath(const char *name) {m_InstallPath = name;} /** * Set the path where this target (if it has a runtime part) should be * installed. This is relative to INSTALL_PREFIX */ - std::string GetRuntimeInstallPath() const {return m_RuntimeInstallPath;} + std::string GetRuntimeInstallPath() {return m_RuntimeInstallPath;} void SetRuntimeInstallPath(const char *name) {m_RuntimeInstallPath = name;} /** @@ -142,14 +136,14 @@ public: */ void AddUtility(const char* u) { m_Utilities.insert(u);} ///! Get the utilities used by this target - std::setconst& GetUtilities() const { return m_Utilities; } + std::setconst& GetUtilities() { return m_Utilities; } void AnalyzeLibDependencies( const cmMakefile& mf ); ///! Set/Get a property of this target file void SetProperty(const char *prop, const char *value); - const char *GetProperty(const char *prop) const; - bool GetPropertyAsBool(const char *prop) const; + const char *GetProperty(const char *prop); + bool GetPropertyAsBool(const char *prop); /** * Trace through the source files in this target and add al source files @@ -158,30 +152,30 @@ public: void TraceVSDependencies(std::string projName, cmMakefile *mf); ///! Return the prefered linker language for this target - const char* GetLinkerLanguage(cmGlobalGenerator*) const; + const char* GetLinkerLanguage(cmGlobalGenerator*); ///! Return the rule variable used to create this type of target, // need to add CMAKE_(LANG) for full name. const char* GetCreateRuleVariable(); ///! Return the name of the variable to look up the target suffix - const char* GetSuffixVariable() const; + const char* GetSuffixVariable(); ///! Return the name of the variable to look up the target suffix - const char* GetPrefixVariable() const; + const char* GetPrefixVariable(); /** Get the full name of the target according to the settings in the given makefile. */ - std::string GetFullName(cmMakefile* mf) const; + std::string GetFullName(cmMakefile* mf); /** Get the base name (no suffix) of the target according to the settings in the given makefile. */ - std::string GetBaseName(cmMakefile* mf) const; + std::string GetBaseName(cmMakefile* mf); /** Get the names of the library needed to generate a build rule that takes into account shared library version numbers. This should be called only on a library target. */ void GetLibraryNames(cmMakefile* mf, std::string& name, std::string& soName, std::string& realName, - std::string& baseName) const; + std::string& baseName); /** Get the names of the library used to remove existing copies of the library from the build tree either before linking or during @@ -191,7 +185,7 @@ public: std::string& staticName, std::string& sharedName, std::string& sharedSOName, - std::string& sharedRealName) const; + std::string& sharedRealName); private: /** * A list of direct dependencies. Use in conjunction with DependencyMap. @@ -216,14 +210,14 @@ private: */ void InsertDependency( DependencyMap& depMap, const cmStdString& lib, - const cmStdString& dep ) const; + const cmStdString& dep ); /* * Deletes \a dep from the dependency list of \a lib. */ void DeleteDependency( DependencyMap& depMap, const cmStdString& lib, - const cmStdString& dep ) const; + const cmStdString& dep ); /** * Emits the library \a lib and all its dependencies into link_line. @@ -237,7 +231,7 @@ private: const DependencyMap& dep_map, std::set& emitted, std::set& visited, - std::vector& link_line ) const; + std::vector& link_line ); /** * Finds the dependencies for \a lib and inserts them into \a @@ -246,15 +240,19 @@ private: void GatherDependencies( const cmMakefile& mf, const std::string& lib, DependencyMap& dep_map ); - const char* GetSuffixVariableInternal(TargetType type) const; - const char* GetPrefixVariableInternal(TargetType type) const; - std::string GetFullNameInternal(cmMakefile* mf, TargetType type) const; - std::string GetBaseNameInternal(cmMakefile* mf, TargetType type) const; + const char* GetSuffixVariableInternal(TargetType type); + const char* GetPrefixVariableInternal(TargetType type); + std::string GetFullNameInternal(cmMakefile* mf, TargetType type); + std::string GetBaseNameInternal(cmMakefile* mf, TargetType type); void GetLibraryNamesInternal(cmMakefile* mf, std::string& name, std::string& soName, std::string& realName, - TargetType type) const; + TargetType type); + + // update the value of the LOCATION var + void UpdateLocation(); + private: std::string m_Name; std::vector m_PreBuildCommands; @@ -271,6 +269,9 @@ private: std::set m_Utilities; bool m_RecordDependencies; std::map m_Properties; + + // the Makefile that owns this target + cmMakefile *m_Makefile; }; typedef std::map cmTargets; -- cgit v0.12