diff options
-rw-r--r-- | Source/cmCoreTryCompile.cxx | 2 | ||||
-rw-r--r-- | Source/cmExportTryCompileFileGenerator.cxx | 7 | ||||
-rw-r--r-- | Source/cmExportTryCompileFileGenerator.h | 2 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 28 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 12 | ||||
-rw-r--r-- | Source/cmake.cxx | 2 |
6 files changed, 36 insertions, 17 deletions
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index e1e1a5c..ffb349e 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -379,7 +379,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv) if (!targets.empty()) { std::string fname = "/" + std::string(targetName) + "Targets.cmake"; - cmExportTryCompileFileGenerator tcfg; + cmExportTryCompileFileGenerator tcfg(gg); tcfg.SetExportFile((this->BinaryDirectory + fname).c_str()); tcfg.SetExports(targets); tcfg.SetConfig(this->Makefile->GetSafeDefinition( diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx index dfb991b..94831f8 100644 --- a/Source/cmExportTryCompileFileGenerator.cxx +++ b/Source/cmExportTryCompileFileGenerator.cxx @@ -13,9 +13,16 @@ #include "cmExportTryCompileFileGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" #include "cmGeneratorExpressionDAGChecker.h" //---------------------------------------------------------------------------- +cmExportTryCompileFileGenerator::cmExportTryCompileFileGenerator( + cmGlobalGenerator* gg) +{ + gg->CreateGenerationObjects(cmGlobalGenerator::ImportedOnly); +} + bool cmExportTryCompileFileGenerator::GenerateMainFile(std::ostream& os) { std::set<cmTarget const*> emitted; diff --git a/Source/cmExportTryCompileFileGenerator.h b/Source/cmExportTryCompileFileGenerator.h index ec70d81..0d84896 100644 --- a/Source/cmExportTryCompileFileGenerator.h +++ b/Source/cmExportTryCompileFileGenerator.h @@ -20,6 +20,8 @@ class cmInstallTargetGenerator; class cmExportTryCompileFileGenerator: public cmExportFileGenerator { public: + cmExportTryCompileFileGenerator(cmGlobalGenerator* gg); + /** Set the list of targets to export. */ void SetExports(const std::vector<cmTarget const*> &exports) { this->Exports = exports; } diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index a77a02a..2b7c1b2 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1170,11 +1170,11 @@ void cmGlobalGenerator::Configure() } -void cmGlobalGenerator::CreateGenerationObjects() +void cmGlobalGenerator::CreateGenerationObjects(TargetTypes targetTypes) { cmDeleteAll(this->GeneratorTargets); this->GeneratorTargets.clear(); - this->CreateGeneratorTargets(); + this->CreateGeneratorTargets(targetTypes); } cmExportBuildFileGenerator* @@ -1485,18 +1485,22 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) +void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes, + cmLocalGenerator *lg) { cmGeneratorTargetsType generatorTargets; cmMakefile* mf = lg->GetMakefile(); - cmTargets& targets = mf->GetTargets(); - for(cmTargets::iterator ti = targets.begin(); - ti != targets.end(); ++ti) + if (targetTypes == AllTargets) { - cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); - this->GeneratorTargets[t] = gt; - generatorTargets[t] = gt; + cmTargets& targets = mf->GetTargets(); + for(cmTargets::iterator ti = targets.begin(); + ti != targets.end(); ++ti) + { + cmTarget* t = &ti->second; + cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); + this->GeneratorTargets[t] = gt; + generatorTargets[t] = gt; + } } for(std::vector<cmTarget*>::const_iterator @@ -1524,12 +1528,12 @@ void cmGlobalGenerator::InitGeneratorTargets() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets() +void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes) { // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]); + this->CreateGeneratorTargets(targetTypes, this->LocalGenerators[i]); } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 95b0ef1..d486003 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -86,7 +86,13 @@ public: */ virtual void Configure(); - void CreateGenerationObjects(); + + enum TargetTypes { + AllTargets, + ImportedOnly + }; + + void CreateGenerationObjects(TargetTypes targetTypes = AllTargets); /** * Generate the all required files for building this project/tree. This @@ -491,9 +497,9 @@ private: // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmLocalGenerator* lg); + void CreateGeneratorTargets(TargetTypes targetTypes, cmLocalGenerator* lg); void InitGeneratorTargets(); - void CreateGeneratorTargets(); + void CreateGeneratorTargets(TargetTypes targetTypes); void ClearGeneratorMembers(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 7bf3832..fb9f123 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -483,7 +483,7 @@ bool cmake::FindPackage(const std::vector<std::string>& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(lg.get()); + gg->CreateGeneratorTargets(cmGlobalGenerator::AllTargets, lg.get()); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); |