From 9f299a1225798f6485ab77c9140bf9c1d589e2fe Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 15 Oct 2015 00:11:21 +0200 Subject: cmLocalUnixMakefileGenerator3: Port API to cmGenertorTarget. --- Source/cmLocalUnixMakefileGenerator3.cxx | 4 ++-- Source/cmLocalUnixMakefileGenerator3.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 91c7acd..c08ea8a 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -209,7 +209,7 @@ GetLocalObjectFiles(std::map &localObjectFiles) } LocalObjectInfo& info = localObjectFiles[objectName]; info.HasSourceExtension = hasSourceExtension; - info.push_back(LocalObjectEntry(gt->Target, sf->GetLanguage())); + info.push_back(LocalObjectEntry(gt, sf->GetLanguage())); } } } @@ -389,7 +389,7 @@ cmLocalUnixMakefileGenerator3 t != info.end(); ++t) { std::string tgtMakefileName = - this->GetRelativeTargetDirectory(*(t->Target)); + this->GetRelativeTargetDirectory(*(t->Target->Target)); std::string targetName = tgtMakefileName; tgtMakefileName += "/build.make"; targetName += "/"; diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 98f15e6..82dedbd 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -254,10 +254,10 @@ private: struct LocalObjectEntry { - cmTarget* Target; + cmGeneratorTarget* Target; std::string Language; LocalObjectEntry(): Target(0), Language() {} - LocalObjectEntry(cmTarget* t, const std::string& lang): + LocalObjectEntry(cmGeneratorTarget* t, const std::string& lang): Target(t), Language(lang) {} }; struct LocalObjectInfo: public std::vector -- cgit v0.12 From c8f8f16541f3ac6af3397f3a78ee68fc963af151 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 15 Oct 2015 00:12:53 +0200 Subject: cmLocalUnixMakefileGenerator3: Port another API to cmGeneratorTarget. --- Source/cmGlobalUnixMakefileGenerator3.cxx | 20 +++++++++++--------- Source/cmLocalUnixMakefileGenerator3.cxx | 14 +++++++------- Source/cmLocalUnixMakefileGenerator3.h | 2 +- Source/cmMakefileTargetGenerator.cxx | 10 +++++----- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index d6f6490..129dc42 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -435,7 +435,8 @@ void cmGlobalUnixMakefileGenerator3 (l->second.GetType() == cmTarget::OBJECT_LIBRARY) || (l->second.GetType() == cmTarget::UTILITY)) { - std::string tname = lg->GetRelativeTargetDirectory(l->second); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&l->second); + std::string tname = lg->GetRelativeTargetDirectory(gt); tname += "/DependInfo.cmake"; cmSystemTools::ConvertToUnixSlashes(tname); cmakefileStream << " \"" << tname << "\"\n"; @@ -484,7 +485,7 @@ cmGlobalUnixMakefileGenerator3 gtarget ->NeedRelinkBeforeInstall(lg->GetConfigName()))) { - std::string tname = lg->GetRelativeTargetDirectory(*gtarget->Target); + std::string tname = lg->GetRelativeTargetDirectory(gtarget); tname += "/"; tname += pass; depends.push_back(tname); @@ -673,7 +674,7 @@ cmGlobalUnixMakefileGenerator3 // Add a fast rule to build the target std::string localName = - lg->GetRelativeTargetDirectory(*gtarget->Target); + lg->GetRelativeTargetDirectory(gtarget); std::string makefileName; makefileName = localName; makefileName += "/build.make"; @@ -693,7 +694,7 @@ cmGlobalUnixMakefileGenerator3 if(gtarget ->NeedRelinkBeforeInstall(lg->GetConfigName())) { - makeTargetName = lg->GetRelativeTargetDirectory(*gtarget->Target); + makeTargetName = lg->GetRelativeTargetDirectory(gtarget); makeTargetName += "/preinstall"; localName = name; localName += "/preinstall"; @@ -750,7 +751,7 @@ cmGlobalUnixMakefileGenerator3 { std::string makefileName; // Add a rule to build the target by name. - localName = lg->GetRelativeTargetDirectory(*gtarget->Target); + localName = lg->GetRelativeTargetDirectory(gtarget); makefileName = localName; makefileName += "/build.make"; @@ -861,7 +862,7 @@ cmGlobalUnixMakefileGenerator3 } depends.clear(); depends.push_back("cmake_check_build_system"); - localName = lg->GetRelativeTargetDirectory(*gtarget->Target); + localName = lg->GetRelativeTargetDirectory(gtarget); localName += "/rule"; lg->WriteMakeRule(ruleFileStream, "Build rule for subdir invocation for target.", @@ -878,7 +879,7 @@ cmGlobalUnixMakefileGenerator3 if(gtarget ->NeedRelinkBeforeInstall(lg->GetConfigName())) { - localName = lg->GetRelativeTargetDirectory(*gtarget->Target); + localName = lg->GetRelativeTargetDirectory(gtarget); localName += "/preinstall"; depends.clear(); commands.clear(); @@ -899,7 +900,7 @@ cmGlobalUnixMakefileGenerator3 } // add the clean rule - localName = lg->GetRelativeTargetDirectory(*gtarget->Target); + localName = lg->GetRelativeTargetDirectory(gtarget); makeTargetName = localName; makeTargetName += "/clean"; depends.clear(); @@ -1066,7 +1067,8 @@ cmGlobalUnixMakefileGenerator3 } cmLocalUnixMakefileGenerator3* lg3 = static_cast(dep->GetLocalGenerator()); - std::string tgtName = lg3->GetRelativeTargetDirectory(*(*dep).Target); + std::string tgtName = + lg3->GetRelativeTargetDirectory(const_cast(dep)); tgtName += "/all"; depends.push_back(tgtName); } diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index c08ea8a..f0373e0 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -389,7 +389,7 @@ cmLocalUnixMakefileGenerator3 t != info.end(); ++t) { std::string tgtMakefileName = - this->GetRelativeTargetDirectory(*(t->Target->Target)); + this->GetRelativeTargetDirectory(t->Target); std::string targetName = tgtMakefileName; tgtMakefileName += "/build.make"; targetName += "/"; @@ -438,7 +438,7 @@ void cmLocalUnixMakefileGenerator3 emitted.insert(t->second->GetName()); // for subdirs add a rule to build this specific target by name. - localName = this->GetRelativeTargetDirectory(*t->second->Target); + localName = this->GetRelativeTargetDirectory(t->second); localName += "/rule"; commands.clear(); depends.clear(); @@ -465,11 +465,11 @@ void cmLocalUnixMakefileGenerator3 // Add a fast rule to build the target std::string makefileName = - this->GetRelativeTargetDirectory(*t->second->Target); + this->GetRelativeTargetDirectory(t->second); makefileName += "/build.make"; // make sure the makefile name is suitable for a makefile std::string makeTargetName = - this->GetRelativeTargetDirectory(*t->second->Target); + this->GetRelativeTargetDirectory(t->second); makeTargetName += "/build"; localName = t->second->GetName(); localName += "/fast"; @@ -487,7 +487,7 @@ void cmLocalUnixMakefileGenerator3 // installation. if(t->second->NeedRelinkBeforeInstall(this->ConfigName)) { - makeTargetName = this->GetRelativeTargetDirectory(*t->second->Target); + makeTargetName = this->GetRelativeTargetDirectory(t->second); makeTargetName += "/preinstall"; localName = t->second->GetName(); localName += "/preinstall"; @@ -933,10 +933,10 @@ cmLocalUnixMakefileGenerator3 //---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 -::GetRelativeTargetDirectory(cmTarget const& target) +::GetRelativeTargetDirectory(cmGeneratorTarget* target) { std::string dir = this->HomeRelativeOutputPath; - dir += this->GetTargetDirectory(target); + dir += this->GetTargetDirectory(*target->Target); return this->Convert(dir,NONE,UNCHANGED); } diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 82dedbd..fb5ac2f 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -131,7 +131,7 @@ public: void WriteSpecialTargetsTop(std::ostream& makefileStream); void WriteSpecialTargetsBottom(std::ostream& makefileStream); - std::string GetRelativeTargetDirectory(cmTarget const& target); + std::string GetRelativeTargetDirectory(cmGeneratorTarget* target); // File pairs for implicit dependency scanning. The key of the map // is the depender and the value is the explicit dependee. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index abcda21..94d583b 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -870,7 +870,7 @@ cmMakefileTargetGenerator temp += ".provides.build"; std::vector r_commands; std::string tgtMakefileName = - this->LocalGenerator->GetRelativeTargetDirectory(*this->Target); + this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget); tgtMakefileName += "/build.make"; r_commands.push_back (this->LocalGenerator->GetRecursiveMakeCall(tgtMakefileName.c_str(), @@ -898,7 +898,7 @@ void cmMakefileTargetGenerator::WriteTargetRequiresRules() // Construct the name of the dependency generation target. std::string depTarget = - this->LocalGenerator->GetRelativeTargetDirectory(*this->Target); + this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget); depTarget += "/requires"; // This target drives dependency generation for all object files. @@ -927,7 +927,7 @@ void cmMakefileTargetGenerator::WriteTargetCleanRules() // Construct the clean target name. std::string cleanTarget = - this->LocalGenerator->GetRelativeTargetDirectory(*this->Target); + this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget); cleanTarget += "/clean"; // Construct the clean command. @@ -1086,7 +1086,7 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() // Construct the name of the dependency generation target. std::string depTarget = - this->LocalGenerator->GetRelativeTargetDirectory(*this->Target); + this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget); depTarget += "/depend"; // Add a command to call CMake to scan dependencies. CMake will @@ -1400,7 +1400,7 @@ void cmMakefileTargetGenerator::WriteTargetDriverRule( { // Compute the name of the driver target. std::string dir = - this->LocalGenerator->GetRelativeTargetDirectory(*this->Target); + this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget); std::string buildTargetRuleName = dir; buildTargetRuleName += relink?"/preinstall":"/build"; buildTargetRuleName = this->Convert(buildTargetRuleName, -- cgit v0.12 From 06f56d3bf5d8210d190e1bfcf05673ceb78c5594 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 15 Oct 2015 00:23:53 +0200 Subject: cmLocalUnixMakefileGenerator3: Port AppendCleanCommand to cmGeneratorTarget. --- Source/cmLocalUnixMakefileGenerator3.cxx | 10 ++++------ Source/cmLocalUnixMakefileGenerator3.h | 2 +- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index f0373e0..2e7a134 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1218,11 +1218,11 @@ void cmLocalUnixMakefileGenerator3 ::AppendCleanCommand(std::vector& commands, const std::vector& files, - cmTarget& target, const char* filename) + cmGeneratorTarget* target, const char* filename) { std::string cleanfile = this->Makefile->GetCurrentBinaryDirectory(); cleanfile += "/"; - cleanfile += this->GetTargetDirectory(target); + cleanfile += this->GetTargetDirectory(target->Target); cleanfile += "/cmake_clean"; if(filename) { @@ -1256,14 +1256,12 @@ cmLocalUnixMakefileGenerator3 { // Get the set of source languages in the target. std::set languages; - cmGeneratorTarget *gtgt = - this->GlobalGenerator->GetGeneratorTarget(&target); - gtgt->GetLanguages(languages, + target->GetLanguages(languages, this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE")); fout << "\n" << "# Per-language clean rules from dependency scanning.\n" << "foreach(lang " << cmJoin(languages, " ") << ")\n" - << " include(" << this->GetTargetDirectory(target) + << " include(" << this->GetTargetDirectory(target->Target) << "/cmake_clean_${lang}.cmake OPTIONAL)\n" << "endforeach()\n"; } diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index fb5ac2f..032e501 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -226,7 +226,7 @@ protected: std::ostream* content = 0); void AppendCleanCommand(std::vector& commands, const std::vector& files, - cmTarget& target, const char* filename =0); + cmGeneratorTarget* target, const char* filename =0); // Helper methods for dependeny updates. bool ScanDependencies(const char* targetDir, diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 8b60a23..1278dcd 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -444,7 +444,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules if(this->Target->GetType() == cmTarget::STATIC_LIBRARY) { this->LocalGenerator->AppendCleanCommand(commands1, libCleanFiles, - *this->Target, "target"); + this->GeneratorTarget, "target"); this->LocalGenerator->CreateCDCommand (commands1, this->Makefile->GetCurrentBinaryDirectory(), diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 94d583b..007a997 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -932,7 +932,7 @@ void cmMakefileTargetGenerator::WriteTargetCleanRules() // Construct the clean command. this->LocalGenerator->AppendCleanCommand(commands, this->CleanFiles, - *this->Target); + this->GeneratorTarget); this->LocalGenerator->CreateCDCommand (commands, this->LocalGenerator->GetCurrentBinaryDirectory(), -- cgit v0.12 From 7f5ec9f109dc66bc22ac377a7fb57d9221aed56b Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 9 Oct 2015 22:27:46 +0200 Subject: cmLocalGenerator: Port GetTargetDirectory to cmGeneratorTarget. --- Source/cmCommonTargetGenerator.cxx | 2 +- Source/cmExtraCodeBlocksGenerator.cxx | 25 +++++++++++-------------- Source/cmExtraCodeBlocksGenerator.h | 5 +++-- Source/cmExtraEclipseCDT4Generator.cxx | 4 +++- Source/cmGlobalNinjaGenerator.cxx | 4 +--- Source/cmGlobalUnixMakefileGenerator3.cxx | 4 +--- Source/cmGlobalVisualStudioGenerator.cxx | 2 +- Source/cmLocalGenerator.cxx | 2 +- Source/cmLocalGenerator.h | 3 ++- Source/cmLocalNinjaGenerator.cxx | 4 ++-- Source/cmLocalNinjaGenerator.h | 3 ++- Source/cmLocalUnixMakefileGenerator3.cxx | 12 ++++++------ Source/cmLocalUnixMakefileGenerator3.h | 3 ++- Source/cmLocalVisualStudio6Generator.cxx | 2 +- Source/cmLocalVisualStudio6Generator.h | 3 ++- Source/cmLocalVisualStudio7Generator.cxx | 12 +++++++----- Source/cmLocalVisualStudio7Generator.h | 3 ++- Source/cmLocalXCodeGenerator.cxx | 2 +- Source/cmLocalXCodeGenerator.h | 3 ++- Source/cmMakefileTargetGenerator.cxx | 8 +++++--- Source/cmNinjaTargetGenerator.cxx | 2 +- Source/cmVisualStudio10TargetGenerator.cxx | 16 ++++++++-------- 22 files changed, 65 insertions(+), 59 deletions(-) diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx index f901414..06838fd 100644 --- a/Source/cmCommonTargetGenerator.cxx +++ b/Source/cmCommonTargetGenerator.cxx @@ -403,7 +403,7 @@ cmCommonTargetGenerator::GetLinkedTargetDirectories() const cmMakefile* mf = linkee->Target->GetMakefile(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; - di += lg->GetTargetDirectory(*linkee->Target); + di += lg->GetTargetDirectory(linkee); dirs.push_back(di); } } diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 0406644..cdb4d8b 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -358,11 +358,13 @@ void cmExtraCodeBlocksGenerator case cmTarget::MODULE_LIBRARY: case cmTarget::OBJECT_LIBRARY: { - this->AppendTarget(fout, ti->first, &ti->second, + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&ti->second); + this->AppendTarget(fout, ti->first, gt, make.c_str(), *lg, compiler.c_str()); std::string fastTarget = ti->first; fastTarget += "/fast"; - this->AppendTarget(fout, fastTarget, &ti->second, + this->AppendTarget(fout, fastTarget, gt, make.c_str(), *lg, compiler.c_str()); } break; @@ -521,14 +523,14 @@ void cmExtraCodeBlocksGenerator // Write a dummy file for OBJECT libraries, so C::B can reference some file std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( cmLocalGenerator* lg, - cmTarget* target) const + cmGeneratorTarget* target) const { // this file doesn't seem to be used by C::B in custom makefile mode, // but we generate a unique file for each OBJECT library so in case // C::B uses it in some way, the targets don't interfere with each other. std::string filename = lg->GetCurrentBinaryDirectory(); filename += "/"; - filename += lg->GetTargetDirectory(*target); + filename += lg->GetTargetDirectory(target); filename += "/"; filename += target->GetName(); filename += ".objlib"; @@ -547,7 +549,7 @@ std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( // Generate the xml code for one target. void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, - cmTarget* target, + cmGeneratorTarget* target, const char* make, const cmLocalGenerator* lg, const char* compiler) @@ -559,7 +561,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, fout<<" \n"; if (target!=0) { - int cbTargetType = this->GetCBTargetType(target); + int cbTargetType = this->GetCBTargetType(target->Target); std::string workingDir = lg->GetCurrentBinaryDirectory(); if ( target->GetType()==cmTarget::EXECUTABLE) { @@ -591,9 +593,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, } else { - cmGeneratorTarget* gt = - this->GlobalGenerator->GetGeneratorTarget(target); - location = gt->GetLocation(buildType); + location = target->GetLocation(buildType); } fout<<"