summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-10-26 17:13:04 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2015-10-26 17:13:04 (GMT)
commitd288b216af6864567354ccb05e85466fb57d46b0 (patch)
tree2e3709b4e47c9a9f2cd2983661423668ce7a4064
parentd71920c45763fe15fa93c2fc1f5aceabba23975e (diff)
parent6cac952b9ed8ad202286ddee7246d9ef7ed8f22d (diff)
downloadCMake-d288b216af6864567354ccb05e85466fb57d46b0.zip
CMake-d288b216af6864567354ccb05e85466fb57d46b0.tar.gz
CMake-d288b216af6864567354ccb05e85466fb57d46b0.tar.bz2
Merge topic 'use-generator-target'
6cac952b VS: Port interface to cmGeneratorTarget 97b37688 VS: Port WriteUtilityDepends to cmGeneratorTarget 600af01d VS: Port utility depends to cmGeneratorTarget 330bfa83 VS: Port target depends to cmGeneratorTarget b13e26e2 VS: Port ProjectDepends to cmGeneratorTarget. 8ac8739b VS: Port TargetIsFortranOnly to cmGeneratorTarget 84fb579f VS: Port WriteProject to cmGeneratorTarget 1eff421a VS: Port loop to cmGeneratorTarget 94fd5a5a VS: Port ImplibDir to cmGeneratorTarget ce9e9a92 VS: Port LinkClosure to cmGeneratorTarget 26e23e84 VS: Port ComputeLongestObjectDirectory to cmGeneratorTarget 01c26986 VS7: Port to cmGeneratorTarget 459c8910 VS10: Port to cmGeneratorTarget. 7f8bb857 VS6: Port to cmGeneratorTarget. a0ebd69b Graphviz: Port to cmGeneratorTarget. bcee21ce C::B: Port API to cmGeneratorTarget. ...
-rw-r--r--Source/cmCommonTargetGenerator.cxx4
-rw-r--r--Source/cmCommonTargetGenerator.h2
-rw-r--r--Source/cmComputeTargetDepends.cxx9
-rw-r--r--Source/cmExportFileGenerator.cxx12
-rw-r--r--Source/cmExtraCodeBlocksGenerator.cxx49
-rw-r--r--Source/cmExtraCodeBlocksGenerator.h5
-rw-r--r--Source/cmExtraCodeLiteGenerator.cxx11
-rw-r--r--Source/cmExtraEclipseCDT4Generator.cxx56
-rw-r--r--Source/cmExtraKateGenerator.cxx31
-rw-r--r--Source/cmExtraSublimeTextGenerator.cxx37
-rw-r--r--Source/cmExtraSublimeTextGenerator.h3
-rw-r--r--Source/cmGeneratorTarget.cxx8
-rw-r--r--Source/cmGeneratorTarget.h11
-rw-r--r--Source/cmGhsMultiTargetGenerator.cxx56
-rw-r--r--Source/cmGhsMultiTargetGenerator.h11
-rw-r--r--Source/cmGlobalGenerator.cxx61
-rw-r--r--Source/cmGlobalGenerator.h4
-rw-r--r--Source/cmGlobalGhsMultiGenerator.cxx23
-rw-r--r--Source/cmGlobalGhsMultiGenerator.h4
-rw-r--r--Source/cmGlobalKdevelopGenerator.cxx20
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx27
-rw-r--r--Source/cmGlobalNinjaGenerator.h12
-rw-r--r--Source/cmGlobalUnixMakefileGenerator3.cxx79
-rw-r--r--Source/cmGlobalUnixMakefileGenerator3.h6
-rw-r--r--Source/cmGlobalVisualStudio10Generator.cxx12
-rw-r--r--Source/cmGlobalVisualStudio10Generator.h4
-rw-r--r--Source/cmGlobalVisualStudio6Generator.cxx25
-rw-r--r--Source/cmGlobalVisualStudio6Generator.h6
-rw-r--r--Source/cmGlobalVisualStudio71Generator.cxx12
-rw-r--r--Source/cmGlobalVisualStudio71Generator.h4
-rw-r--r--Source/cmGlobalVisualStudio7Generator.cxx38
-rw-r--r--Source/cmGlobalVisualStudio7Generator.h9
-rw-r--r--Source/cmGlobalVisualStudio8Generator.cxx15
-rw-r--r--Source/cmGlobalVisualStudio8Generator.h5
-rw-r--r--Source/cmGlobalVisualStudioGenerator.cxx100
-rw-r--r--Source/cmGlobalVisualStudioGenerator.h32
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx400
-rw-r--r--Source/cmGlobalXCodeGenerator.h43
-rw-r--r--Source/cmGraphVizWriter.cxx52
-rw-r--r--Source/cmGraphVizWriter.h7
-rw-r--r--Source/cmInstallTargetGenerator.cxx7
-rw-r--r--Source/cmLocalGenerator.cxx58
-rw-r--r--Source/cmLocalGenerator.h7
-rw-r--r--Source/cmLocalGhsMultiGenerator.cxx10
-rw-r--r--Source/cmLocalNinjaGenerator.cxx20
-rw-r--r--Source/cmLocalNinjaGenerator.h9
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.cxx93
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.h13
-rw-r--r--Source/cmLocalVisualStudio10Generator.cxx13
-rw-r--r--Source/cmLocalVisualStudio6Generator.cxx333
-rw-r--r--Source/cmLocalVisualStudio6Generator.h29
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx251
-rw-r--r--Source/cmLocalVisualStudio7Generator.h32
-rw-r--r--Source/cmLocalVisualStudioGenerator.cxx14
-rw-r--r--Source/cmLocalVisualStudioGenerator.h6
-rw-r--r--Source/cmMakefileExecutableTargetGenerator.cxx16
-rw-r--r--Source/cmMakefileLibraryTargetGenerator.cxx19
-rw-r--r--Source/cmMakefileTargetGenerator.cxx5
-rw-r--r--Source/cmMakefileTargetGenerator.h2
-rw-r--r--Source/cmMakefileUtilityTargetGenerator.cxx11
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx36
-rw-r--r--Source/cmNinjaTargetGenerator.cxx11
-rw-r--r--Source/cmNinjaTargetGenerator.h5
-rw-r--r--Source/cmNinjaUtilityTargetGenerator.cxx16
-rw-r--r--Source/cmQtAutoGeneratorInitializer.cxx2
-rw-r--r--Source/cmTarget.h4
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx49
-rw-r--r--Source/cmVisualStudio10TargetGenerator.h4
-rw-r--r--Source/cmXCodeObject.h8
69 files changed, 1196 insertions, 1192 deletions
diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx
index 6920faf..bd47715 100644
--- a/Source/cmCommonTargetGenerator.cxx
+++ b/Source/cmCommonTargetGenerator.cxx
@@ -18,7 +18,6 @@
#include "cmMakefile.h"
#include "cmSourceFile.h"
#include "cmSystemTools.h"
-#include "cmTarget.h"
cmCommonTargetGenerator::cmCommonTargetGenerator(
cmOutputConverter::RelativeRoot wd,
@@ -26,7 +25,6 @@ cmCommonTargetGenerator::cmCommonTargetGenerator(
)
: WorkingDirectory(wd)
, GeneratorTarget(gt)
- , Target(gt->Target)
, Makefile(gt->Makefile)
, LocalGenerator(static_cast<cmLocalCommonGenerator*>(gt->LocalGenerator))
, GlobalGenerator(static_cast<cmGlobalCommonGenerator*>(
@@ -123,7 +121,7 @@ std::string cmCommonTargetGenerator::ComputeFortranModuleDirectory() const
else
{
// Interpret relative to the current output directory.
- mod_dir = this->Makefile->GetCurrentBinaryDirectory();
+ mod_dir = this->LocalGenerator->GetCurrentBinaryDirectory();
mod_dir += "/";
mod_dir += target_mod_dir;
}
diff --git a/Source/cmCommonTargetGenerator.h b/Source/cmCommonTargetGenerator.h
index a4b2c10..3fb1fd0 100644
--- a/Source/cmCommonTargetGenerator.h
+++ b/Source/cmCommonTargetGenerator.h
@@ -21,7 +21,6 @@ class cmGlobalCommonGenerator;
class cmLocalCommonGenerator;
class cmMakefile;
class cmSourceFile;
-class cmTarget;
/** \class cmCommonTargetGenerator
* \brief Common infrastructure for Makefile and Ninja per-target generators
@@ -49,7 +48,6 @@ protected:
cmOutputConverter::RelativeRoot WorkingDirectory;
cmGeneratorTarget* GeneratorTarget;
- cmTarget* Target;
cmMakefile* Makefile;
cmLocalCommonGenerator* LocalGenerator;
cmGlobalCommonGenerator* GlobalGenerator;
diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx
index 03f4fdd..113c989 100644
--- a/Source/cmComputeTargetDepends.cxx
+++ b/Source/cmComputeTargetDepends.cxx
@@ -175,13 +175,12 @@ void cmComputeTargetDepends::CollectTargets()
this->GlobalGenerator->GetLocalGenerators();
for(unsigned int i = 0; i < lgens.size(); ++i)
{
- const cmTargets& targets = lgens[i]->GetMakefile()->GetTargets();
- for(cmTargets::const_iterator ti = targets.begin();
+ const std::vector<cmGeneratorTarget*> targets =
+ lgens[i]->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
ti != targets.end(); ++ti)
{
- cmTarget const* target = &ti->second;
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(target);
+ cmGeneratorTarget* gt = *ti;
int index = static_cast<int>(this->Targets.size());
this->TargetIndex[gt] = index;
this->Targets.push_back(gt);
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index 1a84625..d52ce35 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -456,13 +456,13 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface(
if (cge->GetHadContextSensitiveCondition())
{
- cmMakefile* mf = target->Target->GetMakefile();
+ cmLocalGenerator* lg = target->GetLocalGenerator();
std::ostringstream e;
e << "Target \"" << target->GetName() << "\" is installed with "
"INCLUDES DESTINATION set to a context sensitive path. Paths which "
"depend on the configuration, policy values or the link interface are "
"not supported. Consider using target_include_directories instead.";
- mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+ lg->IssueMessage(cmake::FATAL_ERROR, e.str());
return;
}
@@ -535,11 +535,11 @@ void getCompatibleInterfaceProperties(cmGeneratorTarget *target,
if (!info)
{
- cmMakefile* mf = target->Target->GetMakefile();
+ cmLocalGenerator* lg = target->GetLocalGenerator();
std::ostringstream e;
e << "Exporting the target \"" << target->GetName() << "\" is not "
"allowed since its linker language cannot be determined";
- mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+ lg->IssueMessage(cmake::FATAL_ERROR, e.str());
return;
}
@@ -835,13 +835,13 @@ cmExportFileGenerator
if(newCMP0022Behavior && !this->ExportOld)
{
- cmMakefile *mf = target->Target->GetMakefile();
+ cmLocalGenerator *lg = target->GetLocalGenerator();
std::ostringstream e;
e << "Target \"" << target->GetName() << "\" has policy CMP0022 enabled, "
"but also has old-style LINK_INTERFACE_LIBRARIES properties "
"populated, but it was exported without the "
"EXPORT_LINK_INTERFACE_LIBRARIES to export the old-style properties";
- mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+ lg->IssueMessage(cmake::FATAL_ERROR, e.str());
return;
}
diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx
index 3bc76fa..597c9d8 100644
--- a/Source/cmExtraCodeBlocksGenerator.cxx
+++ b/Source/cmExtraCodeBlocksGenerator.cxx
@@ -17,7 +17,6 @@
#include "cmake.h"
#include "cmSourceFile.h"
#include "cmGeneratedFileStream.h"
-#include "cmTarget.h"
#include "cmSystemTools.h"
#include "cmXMLSafe.h"
@@ -319,12 +318,12 @@ void cmExtraCodeBlocksGenerator
for (std::vector<cmLocalGenerator*>::const_iterator lg=lgs.begin();
lg!=lgs.end(); lg++)
{
- cmMakefile* makefile=(*lg)->GetMakefile();
- cmTargets& targets=makefile->GetTargets();
- for (cmTargets::iterator ti = targets.begin();
+ std::vector<cmGeneratorTarget*> targets=(*lg)->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ti++)
{
- switch(ti->second.GetType())
+ std::string targetName = (*ti)->GetName();
+ switch((*ti)->GetType())
{
case cmState::GLOBAL_TARGET:
{
@@ -333,7 +332,7 @@ void cmExtraCodeBlocksGenerator
if (strcmp((*lg)->GetCurrentBinaryDirectory(),
(*lg)->GetBinaryDirectory())==0)
{
- this->AppendTarget(fout, ti->first, 0,
+ this->AppendTarget(fout, targetName, 0,
make.c_str(), *lg, compiler.c_str());
}
}
@@ -341,15 +340,16 @@ void cmExtraCodeBlocksGenerator
case cmState::UTILITY:
// Add all utility targets, except the Nightly/Continuous/
// Experimental-"sub"targets as e.g. NightlyStart
- if (((ti->first.find("Nightly")==0) &&(ti->first!="Nightly"))
- || ((ti->first.find("Continuous")==0)&&(ti->first!="Continuous"))
- || ((ti->first.find("Experimental")==0)
- && (ti->first!="Experimental")))
+ if (((targetName.find("Nightly")==0) &&(targetName!="Nightly"))
+ || ((targetName.find("Continuous")==0)
+ &&(targetName!="Continuous"))
+ || ((targetName.find("Experimental")==0)
+ && (targetName!="Experimental")))
{
break;
}
- this->AppendTarget(fout, ti->first, 0,
+ this->AppendTarget(fout, targetName, 0,
make.c_str(), *lg, compiler.c_str());
break;
case cmState::EXECUTABLE:
@@ -358,11 +358,10 @@ void cmExtraCodeBlocksGenerator
case cmState::MODULE_LIBRARY:
case cmState::OBJECT_LIBRARY:
{
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&ti->second);
- this->AppendTarget(fout, ti->first, gt,
+ cmGeneratorTarget* gt = *ti;
+ this->AppendTarget(fout, targetName, gt,
make.c_str(), *lg, compiler.c_str());
- std::string fastTarget = ti->first;
+ std::string fastTarget = targetName;
fastTarget += "/fast";
this->AppendTarget(fout, fastTarget, gt,
make.c_str(), *lg, compiler.c_str());
@@ -388,11 +387,11 @@ void cmExtraCodeBlocksGenerator
lg!=lgs.end(); lg++)
{
cmMakefile* makefile=(*lg)->GetMakefile();
- cmTargets& targets=makefile->GetTargets();
- for (cmTargets::iterator ti = targets.begin();
+ std::vector<cmGeneratorTarget*> targets=(*lg)->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ti++)
{
- switch(ti->second.GetType())
+ switch((*ti)->GetType())
{
case cmState::EXECUTABLE:
case cmState::STATIC_LIBRARY:
@@ -402,8 +401,7 @@ void cmExtraCodeBlocksGenerator
case cmState::UTILITY: // can have sources since 2.6.3
{
std::vector<cmSourceFile*> sources;
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&ti->second);
+ cmGeneratorTarget* gt = *ti;
gt->GetSourceFiles(sources,
makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
@@ -442,7 +440,7 @@ void cmExtraCodeBlocksGenerator
}
CbpUnit &cbpUnit = allFiles[fullPath];
- cbpUnit.Targets.push_back(&(ti->second));
+ cbpUnit.Targets.push_back(*ti);
}
}
default: // intended fallthrough
@@ -502,8 +500,9 @@ void cmExtraCodeBlocksGenerator
fout<<" <Unit filename=\""<< cmXMLSafe(unitFilename) <<"\">\n";
- for(std::vector<const cmTarget*>::const_iterator ti = unit.Targets.begin();
- ti != unit.Targets.end(); ++ti)
+ for(std::vector<const cmGeneratorTarget*>::const_iterator ti =
+ unit.Targets.begin();
+ ti != unit.Targets.end(); ++ti)
{
std::string const& targetName = (*ti)->GetName();
fout<<" <Option target=\""<< cmXMLSafe(targetName) <<"\"/>\n";
@@ -561,7 +560,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout,
fout<<" <Target title=\"" << targetName << "\">\n";
if (target!=0)
{
- int cbTargetType = this->GetCBTargetType(target->Target);
+ int cbTargetType = this->GetCBTargetType(target);
std::string workingDir = lg->GetCurrentBinaryDirectory();
if ( target->GetType()==cmState::EXECUTABLE)
{
@@ -719,7 +718,7 @@ std::string cmExtraCodeBlocksGenerator::GetCBCompilerId(const cmMakefile* mf)
// Translate the cmake target type into the CodeBlocks target type id
-int cmExtraCodeBlocksGenerator::GetCBTargetType(cmTarget* target)
+int cmExtraCodeBlocksGenerator::GetCBTargetType(cmGeneratorTarget* target)
{
if ( target->GetType()==cmState::EXECUTABLE)
{
diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h
index f28809a..0c3846d 100644
--- a/Source/cmExtraCodeBlocksGenerator.h
+++ b/Source/cmExtraCodeBlocksGenerator.h
@@ -18,7 +18,6 @@
class cmLocalGenerator;
class cmMakefile;
class cmGeneratorTarget;
-class cmTarget;
class cmGeneratedFileStream;
/** \class cmExtraCodeBlocksGenerator
@@ -42,7 +41,7 @@ public:
private:
struct CbpUnit
{
- std::vector<const cmTarget*> Targets;
+ std::vector<const cmGeneratorTarget*> Targets;
};
void CreateProjectFile(const std::vector<cmLocalGenerator*>& lgs);
@@ -53,7 +52,7 @@ private:
cmGeneratorTarget* target) const;
std::string GetCBCompilerId(const cmMakefile* mf);
- int GetCBTargetType(cmTarget* target);
+ int GetCBTargetType(cmGeneratorTarget* target);
std::string BuildMakeCommand(const std::string& make, const char* makefile,
const std::string& target);
void AppendTarget(cmGeneratedFileStream& fout,
diff --git a/Source/cmExtraCodeLiteGenerator.cxx b/Source/cmExtraCodeLiteGenerator.cxx
index 10f33be..f4a6537 100644
--- a/Source/cmExtraCodeLiteGenerator.cxx
+++ b/Source/cmExtraCodeLiteGenerator.cxx
@@ -155,12 +155,12 @@ void cmExtraCodeLiteGenerator
lg!=lgs.end(); lg++)
{
cmMakefile* makefile=(*lg)->GetMakefile();
- cmTargets& targets=makefile->GetTargets();
- for (cmTargets::iterator ti = targets.begin();
+ std::vector<cmGeneratorTarget*> targets=(*lg)->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ti++)
{
- switch(ti->second.GetType())
+ switch((*ti)->GetType())
{
case cmState::EXECUTABLE:
{
@@ -186,7 +186,7 @@ void cmExtraCodeLiteGenerator
break;
}
- switch(ti->second.GetType())
+ switch((*ti)->GetType())
{
case cmState::EXECUTABLE:
case cmState::STATIC_LIBRARY:
@@ -194,8 +194,7 @@ void cmExtraCodeLiteGenerator
case cmState::MODULE_LIBRARY:
{
std::vector<cmSourceFile*> sources;
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&ti->second);
+ cmGeneratorTarget* gt = *ti;
gt->GetSourceFiles(sources,
makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx
index 31c05fd..aedf6f4 100644
--- a/Source/cmExtraEclipseCDT4Generator.cxx
+++ b/Source/cmExtraEclipseCDT4Generator.cxx
@@ -536,13 +536,15 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
++lgIt)
{
cmMakefile* makefile = (*lgIt)->GetMakefile();
- const cmTargets& targets = makefile->GetTargets();
+ const std::vector<cmGeneratorTarget*> targets =
+ (*lgIt)->GetGeneratorTargets();
- for(cmTargets::const_iterator ti=targets.begin(); ti!=targets.end();++ti)
+ for(std::vector<cmGeneratorTarget*>::const_iterator ti=targets.begin();
+ ti!=targets.end();++ti)
{
std::string linkName2 = linkName;
linkName2 += "/";
- switch(ti->second.GetType())
+ switch((*ti)->GetType())
{
case cmState::EXECUTABLE:
case cmState::STATIC_LIBRARY:
@@ -550,10 +552,10 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
case cmState::MODULE_LIBRARY:
case cmState::OBJECT_LIBRARY:
{
- const char* prefix = (ti->second.GetType()==cmState::EXECUTABLE ?
+ const char* prefix = ((*ti)->GetType()==cmState::EXECUTABLE ?
"[exe] " : "[lib] ");
linkName2 += prefix;
- linkName2 += ti->first;
+ linkName2 += (*ti)->GetName();
this->AppendLinkedResource(fout, linkName2, "virtual:/virtual",
VirtualFolder);
if (!this->GenerateLinkedResources)
@@ -562,10 +564,8 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
}
std::vector<cmSourceGroup> sourceGroups=makefile->GetSourceGroups();
// get the files from the source lists then add them to the groups
- cmTarget* tgt = const_cast<cmTarget*>(&ti->second);
+ cmGeneratorTarget* gt = const_cast<cmGeneratorTarget*>(*ti);
std::vector<cmSourceFile*> files;
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(tgt);
gt->GetSourceFiles(files,
makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
for(std::vector<cmSourceFile*>::const_iterator sfIt = files.begin();
@@ -965,13 +965,13 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
it != this->GlobalGenerator->GetLocalGenerators().end();
++it)
{
- cmGeneratorTargetsType targets = (*it)->GetGeneratorTargets();
- for (cmGeneratorTargetsType::iterator l = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = (*it)->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::iterator l = targets.begin();
l != targets.end(); ++l)
{
std::vector<std::string> includeDirs;
std::string config = mf->GetSafeDefinition("CMAKE_BUILD_TYPE");
- (*it)->GetIncludeDirectories(includeDirs, l->second, "C", config);
+ (*it)->GetIncludeDirectories(includeDirs, *l, "C", config);
this->AppendIncludeDirectories(fout, includeDirs, emmited);
}
}
@@ -1030,7 +1030,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
it != this->GlobalGenerator->GetLocalGenerators().end();
++it)
{
- const cmTargets& targets = (*it)->GetMakefile()->GetTargets();
+ const std::vector<cmGeneratorTarget*> targets =
+ (*it)->GetGeneratorTargets();
std::string subdir = (*it)->Convert((*it)->GetCurrentBinaryDirectory(),
cmLocalGenerator::HOME_OUTPUT);
if (subdir == ".")
@@ -1038,9 +1039,11 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
subdir = "";
}
- for(cmTargets::const_iterator ti=targets.begin(); ti!=targets.end(); ++ti)
+ for(std::vector<cmGeneratorTarget*>::const_iterator ti =
+ targets.begin(); ti!=targets.end(); ++ti)
{
- switch(ti->second.GetType())
+ std::string targetName = (*ti)->GetName();
+ switch((*ti)->GetType())
{
case cmState::GLOBAL_TARGET:
{
@@ -1048,22 +1051,22 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
// not from the subdirs
if (subdir.empty())
{
- this->AppendTarget(fout, ti->first, make, makeArgs, subdir, ": ");
+ this->AppendTarget(fout, targetName, make, makeArgs, subdir, ": ");
}
}
break;
case cmState::UTILITY:
// Add all utility targets, except the Nightly/Continuous/
// Experimental-"sub"targets as e.g. NightlyStart
- if (((ti->first.find("Nightly")==0) &&(ti->first!="Nightly"))
- || ((ti->first.find("Continuous")==0)&&(ti->first!="Continuous"))
- || ((ti->first.find("Experimental")==0)
- && (ti->first!="Experimental")))
+ if (((targetName.find("Nightly")==0) &&(targetName!="Nightly"))
+ || ((targetName.find("Continuous")==0)&&(targetName!="Continuous"))
+ || ((targetName.find("Experimental")==0)
+ && (targetName!="Experimental")))
{
break;
}
- this->AppendTarget(fout, ti->first, make, makeArgs, subdir, ": ");
+ this->AppendTarget(fout, targetName, make, makeArgs, subdir, ": ");
break;
case cmState::EXECUTABLE:
case cmState::STATIC_LIBRARY:
@@ -1071,10 +1074,10 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
case cmState::MODULE_LIBRARY:
case cmState::OBJECT_LIBRARY:
{
- const char* prefix = (ti->second.GetType()==cmState::EXECUTABLE ?
+ const char* prefix = ((*ti)->GetType()==cmState::EXECUTABLE ?
"[exe] " : "[lib] ");
- this->AppendTarget(fout, ti->first, make, makeArgs, subdir, prefix);
- std::string fastTarget = ti->first;
+ this->AppendTarget(fout, targetName, make, makeArgs, subdir, prefix);
+ std::string fastTarget = targetName;
fastTarget += "/fast";
this->AppendTarget(fout, fastTarget, make, makeArgs, subdir, prefix);
@@ -1083,21 +1086,20 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
{
std::string virtDir = "[Targets]/";
virtDir += prefix;
- virtDir += ti->first;
+ virtDir += targetName;
std::string buildArgs = "-C \"";
buildArgs += (*it)->GetBinaryDirectory();
buildArgs += "\" ";
buildArgs += makeArgs;
this->AppendTarget(fout, "Build", make, buildArgs, virtDir, "",
- ti->first.c_str());
+ targetName.c_str());
std::string cleanArgs = "-E chdir \"";
cleanArgs += (*it)->GetCurrentBinaryDirectory();
cleanArgs += "\" \"";
cleanArgs += cmSystemTools::GetCMakeCommand();
cleanArgs += "\" -P \"";
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&ti->second);
+ cmGeneratorTarget* gt = *ti;
cleanArgs += (*it)->GetTargetDirectory(gt);
cleanArgs += "/cmake_clean.cmake\"";
this->AppendTarget(fout, "Clean", cmSystemTools::GetCMakeCommand(),
diff --git a/Source/cmExtraKateGenerator.cxx b/Source/cmExtraKateGenerator.cxx
index dc6421b..1741acf 100644
--- a/Source/cmExtraKateGenerator.cxx
+++ b/Source/cmExtraKateGenerator.cxx
@@ -119,14 +119,16 @@ cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
it != this->GlobalGenerator->GetLocalGenerators().end();
++it)
{
- const cmTargets& targets = (*it)->GetMakefile()->GetTargets();
- cmMakefile* makefile=(*it)->GetMakefile();
+ const std::vector<cmGeneratorTarget*> targets =
+ (*it)->GetGeneratorTargets();
std::string currentDir = (*it)->GetCurrentBinaryDirectory();
bool topLevel = (currentDir == (*it)->GetBinaryDirectory());
- for(cmTargets::const_iterator ti=targets.begin(); ti!=targets.end(); ++ti)
+ for(std::vector<cmGeneratorTarget*>::const_iterator ti =
+ targets.begin(); ti!=targets.end(); ++ti)
{
- switch(ti->second.GetType())
+ std::string targetName = (*ti)->GetName();
+ switch((*ti)->GetType())
{
case cmState::GLOBAL_TARGET:
{
@@ -138,9 +140,9 @@ cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
insertTarget = true;
// only add the "edit_cache" target if it's not ccmake, because
// this will not work within the IDE
- if (ti->first == "edit_cache")
+ if (targetName == "edit_cache")
{
- const char* editCommand = makefile->GetDefinition
+ const char* editCommand = (*it)->GetMakefile()->GetDefinition
("CMAKE_EDIT_COMMAND");
if (editCommand == 0)
{
@@ -154,7 +156,7 @@ cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
}
if (insertTarget)
{
- this->AppendTarget(fout, ti->first, make, makeArgs,
+ this->AppendTarget(fout, targetName, make, makeArgs,
currentDir, homeOutputDir);
}
}
@@ -162,15 +164,16 @@ cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
case cmState::UTILITY:
// Add all utility targets, except the Nightly/Continuous/
// Experimental-"sub"targets as e.g. NightlyStart
- if (((ti->first.find("Nightly")==0) &&(ti->first!="Nightly"))
- || ((ti->first.find("Continuous")==0)&&(ti->first!="Continuous"))
- || ((ti->first.find("Experimental")==0)
- && (ti->first!="Experimental")))
+ if (((targetName.find("Nightly")==0) &&(targetName!="Nightly"))
+ || ((targetName.find("Continuous")==0)
+ &&(targetName!="Continuous"))
+ || ((targetName.find("Experimental")==0)
+ && (targetName!="Experimental")))
{
break;
}
- this->AppendTarget(fout, ti->first, make, makeArgs,
+ this->AppendTarget(fout, targetName, make, makeArgs,
currentDir, homeOutputDir);
break;
case cmState::EXECUTABLE:
@@ -179,9 +182,9 @@ cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
case cmState::MODULE_LIBRARY:
case cmState::OBJECT_LIBRARY:
{
- this->AppendTarget(fout, ti->first, make, makeArgs,
+ this->AppendTarget(fout, targetName, make, makeArgs,
currentDir, homeOutputDir);
- std::string fastTarget = ti->first;
+ std::string fastTarget = targetName;
fastTarget += "/fast";
this->AppendTarget(fout, fastTarget, make, makeArgs,
currentDir, homeOutputDir);
diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx
index ac0202b..92d38b9 100644
--- a/Source/cmExtraSublimeTextGenerator.cxx
+++ b/Source/cmExtraSublimeTextGenerator.cxx
@@ -20,7 +20,6 @@
#include "cmMakefile.h"
#include "cmSourceFile.h"
#include "cmSystemTools.h"
-#include "cmTarget.h"
#include <cmsys/SystemTools.hxx>
@@ -162,11 +161,12 @@ void cmExtraSublimeTextGenerator::
lg!=lgs.end(); lg++)
{
cmMakefile* makefile=(*lg)->GetMakefile();
- cmTargets& targets=makefile->GetTargets();
- for (cmTargets::iterator ti = targets.begin();
+ std::vector<cmGeneratorTarget*> targets=(*lg)->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ti++)
{
- switch(ti->second.GetType())
+ std::string targetName = (*ti)->GetName();
+ switch((*ti)->GetType())
{
case cmState::GLOBAL_TARGET:
{
@@ -175,7 +175,7 @@ void cmExtraSublimeTextGenerator::
if (strcmp((*lg)->GetCurrentBinaryDirectory(),
(*lg)->GetBinaryDirectory())==0)
{
- this->AppendTarget(fout, ti->first, *lg, 0,
+ this->AppendTarget(fout, targetName, *lg, 0,
make.c_str(), makefile, compiler.c_str(),
sourceFileFlags, false);
}
@@ -184,15 +184,16 @@ void cmExtraSublimeTextGenerator::
case cmState::UTILITY:
// Add all utility targets, except the Nightly/Continuous/
// Experimental-"sub"targets as e.g. NightlyStart
- if (((ti->first.find("Nightly")==0) &&(ti->first!="Nightly"))
- || ((ti->first.find("Continuous")==0)&&(ti->first!="Continuous"))
- || ((ti->first.find("Experimental")==0)
- && (ti->first!="Experimental")))
+ if (((targetName.find("Nightly")==0) &&(targetName!="Nightly"))
+ || ((targetName.find("Continuous")==0)
+ &&(targetName!="Continuous"))
+ || ((targetName.find("Experimental")==0)
+ && (targetName!="Experimental")))
{
break;
}
- this->AppendTarget(fout, ti->first, *lg, 0,
+ this->AppendTarget(fout, targetName, *lg, 0,
make.c_str(), makefile, compiler.c_str(),
sourceFileFlags, false);
break;
@@ -202,12 +203,12 @@ void cmExtraSublimeTextGenerator::
case cmState::MODULE_LIBRARY:
case cmState::OBJECT_LIBRARY:
{
- this->AppendTarget(fout, ti->first, *lg, &ti->second,
+ this->AppendTarget(fout, targetName, *lg, *ti,
make.c_str(), makefile, compiler.c_str(),
sourceFileFlags, false);
- std::string fastTarget = ti->first;
+ std::string fastTarget = targetName;
fastTarget += "/fast";
- this->AppendTarget(fout, fastTarget, *lg, &ti->second,
+ this->AppendTarget(fout, fastTarget, *lg, *ti,
make.c_str(), makefile, compiler.c_str(),
sourceFileFlags, false);
}
@@ -223,7 +224,7 @@ void cmExtraSublimeTextGenerator::
AppendTarget(cmGeneratedFileStream& fout,
const std::string& targetName,
cmLocalGenerator* lg,
- cmTarget* target,
+ cmGeneratorTarget* target,
const char* make,
const cmMakefile* makefile,
const char*, //compiler
@@ -233,10 +234,8 @@ void cmExtraSublimeTextGenerator::
if (target != 0)
{
- cmGeneratorTarget *gtgt = this->GlobalGenerator
- ->GetGeneratorTarget(target);
std::vector<cmSourceFile*> sourceFiles;
- gtgt->GetSourceFiles(sourceFiles,
+ target->GetSourceFiles(sourceFiles,
makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
std::vector<cmSourceFile*>::const_iterator sourceFilesEnd =
sourceFiles.end();
@@ -254,9 +253,9 @@ void cmExtraSublimeTextGenerator::
}
std::vector<std::string>& flags = sourceFileFlagsIter->second;
std::string flagsString =
- this->ComputeFlagsForObject(*iter, lg, gtgt);
+ this->ComputeFlagsForObject(*iter, lg, target);
std::string definesString =
- this->ComputeDefines(*iter, lg, gtgt);
+ this->ComputeDefines(*iter, lg, target);
flags.clear();
cmsys::RegularExpression flagRegex;
// Regular expression to extract compiler flags from a string
diff --git a/Source/cmExtraSublimeTextGenerator.h b/Source/cmExtraSublimeTextGenerator.h
index 5dd1140..cf31ee0 100644
--- a/Source/cmExtraSublimeTextGenerator.h
+++ b/Source/cmExtraSublimeTextGenerator.h
@@ -18,7 +18,6 @@
class cmLocalGenerator;
class cmMakefile;
-class cmTarget;
class cmGeneratedFileStream;
class cmGeneratorTarget;
@@ -67,7 +66,7 @@ private:
void AppendTarget(cmGeneratedFileStream& fout,
const std::string& targetName,
cmLocalGenerator* lg,
- cmTarget* target,
+ cmGeneratorTarget* target,
const char* make,
const cmMakefile* makefile,
const char* compiler,
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 713ab6a..fe6b446 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -3607,14 +3607,14 @@ std::string cmGeneratorTarget::GetPDBName(const std::string& config) const
return prefix+base+".pdb";
}
-bool cmStrictTargetComparison::operator()(cmTarget const* t1,
- cmTarget const* t2) const
+bool cmGeneratorTarget::StrictTargetComparison::operator()(
+ cmGeneratorTarget const* t1, cmGeneratorTarget const* t2) const
{
int nameResult = strcmp(t1->GetName().c_str(), t2->GetName().c_str());
if (nameResult == 0)
{
- return strcmp(t1->GetMakefile()->GetCurrentBinaryDirectory(),
- t2->GetMakefile()->GetCurrentBinaryDirectory()) < 0;
+ return strcmp(t1->GetLocalGenerator()->GetCurrentBinaryDirectory(),
+ t2->GetLocalGenerator()->GetCurrentBinaryDirectory()) < 0;
}
return nameResult < 0;
}
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 2dc3a6f..544cf0e 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -673,14 +673,11 @@ public:
{
return this->MaxLanguageStandards;
}
-};
-struct cmStrictTargetComparison {
- bool operator()(cmTarget const* t1, cmTarget const* t2) const;
+ struct StrictTargetComparison {
+ bool operator()(cmGeneratorTarget const* t1,
+ cmGeneratorTarget const* t2) const;
+ };
};
-typedef std::map<cmTarget const*,
- cmGeneratorTarget*,
- cmStrictTargetComparison> cmGeneratorTargetsType;
-
#endif
diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx
index 01e6f8c..12115be 100644
--- a/Source/cmGhsMultiTargetGenerator.cxx
+++ b/Source/cmGhsMultiTargetGenerator.cxx
@@ -22,23 +22,22 @@
std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic");
cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target)
- : Target(target->Target)
- , GeneratorTarget(target)
+ : GeneratorTarget(target)
, LocalGenerator(static_cast<cmLocalGhsMultiGenerator *>(
target->GetLocalGenerator()))
, Makefile(target->Target->GetMakefile())
, TargetGroup(DetermineIfTargetGroup(target))
, DynamicDownload(false)
{
- this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target);
+ this->RelBuildFilePath = this->GetRelBuildFilePath(target);
this->RelOutputFileName =
- this->RelBuildFilePath + this->Target->GetName() + ".a";
+ this->RelBuildFilePath + target->GetName() + ".a";
this->RelBuildFileName = this->RelBuildFilePath;
- this->RelBuildFileName += this->GetBuildFileName(target->Target);
+ this->RelBuildFileName += this->GetBuildFileName(target);
- std::string absPathToRoot = this->GetAbsPathToRoot(target->Target);
+ std::string absPathToRoot = this->GetAbsPathToRoot(target);
absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot);
this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath;
this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName;
@@ -51,7 +50,8 @@ cmGhsMultiTargetGenerator::~cmGhsMultiTargetGenerator()
}
std::string
-cmGhsMultiTargetGenerator::GetRelBuildFilePath(const cmTarget *target)
+cmGhsMultiTargetGenerator::GetRelBuildFilePath(
+ const cmGeneratorTarget *target)
{
std::string output;
char const *folderProp = target->GetProperty("FOLDER");
@@ -66,15 +66,13 @@ cmGhsMultiTargetGenerator::GetRelBuildFilePath(const cmTarget *target)
}
std::string
-cmGhsMultiTargetGenerator::GetAbsPathToRoot(const cmTarget *target)
+cmGhsMultiTargetGenerator::GetAbsPathToRoot(const cmGeneratorTarget *target)
{
- cmGeneratorTarget* gt = target->GetMakefile()->GetGlobalGenerator()
- ->GetGeneratorTarget(target);
- return gt->GetLocalGenerator()->GetBinaryDirectory();
+ return target->GetLocalGenerator()->GetBinaryDirectory();
}
std::string
-cmGhsMultiTargetGenerator::GetAbsBuildFilePath(const cmTarget *target)
+cmGhsMultiTargetGenerator::GetAbsBuildFilePath(const cmGeneratorTarget *target)
{
std::string output;
output = cmGhsMultiTargetGenerator::GetAbsPathToRoot(target);
@@ -84,7 +82,7 @@ cmGhsMultiTargetGenerator::GetAbsBuildFilePath(const cmTarget *target)
}
std::string
-cmGhsMultiTargetGenerator::GetRelBuildFileName(const cmTarget *target)
+cmGhsMultiTargetGenerator::GetRelBuildFileName(const cmGeneratorTarget *target)
{
std::string output;
output = cmGhsMultiTargetGenerator::GetRelBuildFilePath(target);
@@ -93,7 +91,8 @@ cmGhsMultiTargetGenerator::GetRelBuildFileName(const cmTarget *target)
return output;
}
-std::string cmGhsMultiTargetGenerator::GetBuildFileName(const cmTarget *target)
+std::string
+cmGhsMultiTargetGenerator::GetBuildFileName(const cmGeneratorTarget *target)
{
std::string output;
output = target->GetName();
@@ -161,7 +160,8 @@ void cmGhsMultiTargetGenerator::Generate()
bool cmGhsMultiTargetGenerator::IncludeThisTarget()
{
bool output = true;
- char const *excludeFromAll = this->Target->GetProperty("EXCLUDE_FROM_ALL");
+ char const *excludeFromAll =
+ this->GeneratorTarget->GetProperty("EXCLUDE_FROM_ALL");
if (NULL != excludeFromAll && '1' == excludeFromAll[0] &&
'\0' == excludeFromAll[1])
{
@@ -367,13 +367,13 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries()
for (cmTargetDependSet::iterator tdsI = tds.begin(); tdsI != tds.end();
++tdsI)
{
- const cmTarget *tg = (*tdsI)->Target;
+ const cmGeneratorTarget *tg = *tdsI;
*this->GetFolderBuildStreams() << " -L\"" << GetAbsBuildFilePath(tg)
<< "\"" << std::endl;
}
// library targets
cmTarget::LinkLibraryVectorType llv =
- this->Target->GetOriginalLinkLibraries();
+ this->GeneratorTarget->Target->GetOriginalLinkLibraries();
for (cmTarget::LinkLibraryVectorType::const_iterator llvI = llv.begin();
llvI != llv.end(); ++llvI)
{
@@ -391,10 +391,12 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries()
void cmGhsMultiTargetGenerator::WriteCustomCommands()
{
- WriteCustomCommandsHelper(this->Target->GetPreBuildCommands(),
- cmTarget::PRE_BUILD);
- WriteCustomCommandsHelper(this->Target->GetPostBuildCommands(),
- cmTarget::POST_BUILD);
+ WriteCustomCommandsHelper(
+ this->GeneratorTarget->Target->GetPreBuildCommands(),
+ cmTarget::PRE_BUILD);
+ WriteCustomCommandsHelper(
+ this->GeneratorTarget->Target->GetPostBuildCommands(),
+ cmTarget::POST_BUILD);
}
void cmGhsMultiTargetGenerator::WriteCustomCommandsHelper(
@@ -518,7 +520,7 @@ cmGhsMultiTargetGenerator::GetOutputDirectory(const std::string &config) const
std::string outputDir(AbsBuildFilePath);
const char *runtimeOutputProp =
- this->Target->GetProperty("RUNTIME_OUTPUT_DIRECTORY");
+ this->GeneratorTarget->GetProperty("RUNTIME_OUTPUT_DIRECTORY");
if (NULL != runtimeOutputProp)
{
outputDir = runtimeOutputProp;
@@ -526,7 +528,8 @@ cmGhsMultiTargetGenerator::GetOutputDirectory(const std::string &config) const
std::string configCapped(cmSystemTools::UpperCase(config));
const char *runtimeOutputSProp =
- this->Target->GetProperty("RUNTIME_OUTPUT_DIRECTORY_" + configCapped);
+ this->GeneratorTarget
+ ->GetProperty("RUNTIME_OUTPUT_DIRECTORY_" + configCapped);
if (NULL != runtimeOutputSProp)
{
outputDir = runtimeOutputSProp;
@@ -544,9 +547,10 @@ cmGhsMultiTargetGenerator::GetOutputDirectory(const std::string &config) const
std::string
cmGhsMultiTargetGenerator::GetOutputFilename(const std::string &config) const
{
- std::string outputFilename(this->Target->GetName());
+ std::string outputFilename(this->GeneratorTarget->GetName());
- const char *outputNameProp = this->Target->GetProperty("OUTPUT_NAME");
+ const char *outputNameProp =
+ this->GeneratorTarget->GetProperty("OUTPUT_NAME");
if (NULL != outputNameProp)
{
outputFilename = outputNameProp;
@@ -554,7 +558,7 @@ cmGhsMultiTargetGenerator::GetOutputFilename(const std::string &config) const
std::string configCapped(cmSystemTools::UpperCase(config));
const char *outputNameSProp =
- this->Target->GetProperty(configCapped + "_OUTPUT_NAME");
+ this->GeneratorTarget->GetProperty(configCapped + "_OUTPUT_NAME");
if (NULL != outputNameSProp)
{
outputFilename = outputNameSProp;
diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h
index d1c17f4..327fdef 100644
--- a/Source/cmGhsMultiTargetGenerator.h
+++ b/Source/cmGhsMultiTargetGenerator.h
@@ -54,11 +54,11 @@ public:
return this->AbsOutputFileName.c_str();
}
- static std::string GetRelBuildFilePath(const cmTarget *target);
- static std::string GetAbsPathToRoot(const cmTarget *target);
- static std::string GetAbsBuildFilePath(const cmTarget *target);
- static std::string GetRelBuildFileName(const cmTarget *target);
- static std::string GetBuildFileName(const cmTarget *target);
+ static std::string GetRelBuildFilePath(const cmGeneratorTarget *target);
+ static std::string GetAbsPathToRoot(const cmGeneratorTarget *target);
+ static std::string GetAbsBuildFilePath(const cmGeneratorTarget *target);
+ static std::string GetRelBuildFileName(const cmGeneratorTarget *target);
+ static std::string GetBuildFileName(const cmGeneratorTarget *target);
static std::string AddSlashIfNeededToPath(std::string const &input);
private:
@@ -99,7 +99,6 @@ private:
bool DetermineIfDynamicDownload(std::string const &config,
const std::string &language);
- cmTarget *Target;
cmGeneratorTarget* GeneratorTarget;
cmLocalGhsMultiGenerator *LocalGenerator;
cmMakefile *Makefile;
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 086ff25..d26cc34 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -48,6 +48,18 @@
#include <assert.h>
+bool cmTarget::StrictTargetComparison::operator()(cmTarget const* t1,
+ cmTarget const* t2) const
+{
+ int nameResult = strcmp(t1->GetName().c_str(), t2->GetName().c_str());
+ if (nameResult == 0)
+ {
+ return strcmp(t1->GetMakefile()->GetCurrentBinaryDirectory(),
+ t2->GetMakefile()->GetCurrentBinaryDirectory()) < 0;
+ }
+ return nameResult < 0;
+}
+
cmGlobalGenerator::cmGlobalGenerator(cmake* cm)
: CMakeInstance(cm)
{
@@ -1456,34 +1468,34 @@ cmGlobalGenerator::CreateQtAutoGeneratorsTargets()
#ifdef CMAKE_BUILD_WITH_CMAKE
for(unsigned int i=0; i < this->LocalGenerators.size(); ++i)
{
- cmTargets& targets =
- this->LocalGenerators[i]->GetMakefile()->GetTargets();
+ std::vector<cmGeneratorTarget*> targets =
+ this->LocalGenerators[i]->GetGeneratorTargets();
std::vector<cmGeneratorTarget*> filteredTargets;
filteredTargets.reserve(targets.size());
- for(cmTargets::iterator ti = targets.begin();
+ for(std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ++ti)
{
- if (ti->second.GetType() == cmState::GLOBAL_TARGET)
+ if ((*ti)->GetType() == cmState::GLOBAL_TARGET)
{
continue;
}
- if(ti->second.GetType() != cmState::EXECUTABLE &&
- ti->second.GetType() != cmState::STATIC_LIBRARY &&
- ti->second.GetType() != cmState::SHARED_LIBRARY &&
- ti->second.GetType() != cmState::MODULE_LIBRARY &&
- ti->second.GetType() != cmState::OBJECT_LIBRARY)
+ if((*ti)->GetType() != cmState::EXECUTABLE &&
+ (*ti)->GetType() != cmState::STATIC_LIBRARY &&
+ (*ti)->GetType() != cmState::SHARED_LIBRARY &&
+ (*ti)->GetType() != cmState::MODULE_LIBRARY &&
+ (*ti)->GetType() != cmState::OBJECT_LIBRARY)
{
continue;
}
- if((!ti->second.GetPropertyAsBool("AUTOMOC")
- && !ti->second.GetPropertyAsBool("AUTOUIC")
- && !ti->second.GetPropertyAsBool("AUTORCC"))
- || ti->second.IsImported())
+ if((!(*ti)->GetPropertyAsBool("AUTOMOC")
+ && !(*ti)->GetPropertyAsBool("AUTOUIC")
+ && !(*ti)->GetPropertyAsBool("AUTORCC"))
+ || (*ti)->IsImported())
{
continue;
}
// don't do anything if there is no Qt4 or Qt5Core (which contains moc):
- cmMakefile* mf = ti->second.GetMakefile();
+ cmMakefile* mf = (*ti)->Target->GetMakefile();
std::string qtMajorVersion = mf->GetSafeDefinition("QT_VERSION_MAJOR");
if (qtMajorVersion == "")
{
@@ -1494,7 +1506,7 @@ cmGlobalGenerator::CreateQtAutoGeneratorsTargets()
continue;
}
- cmGeneratorTarget* gt = this->GetGeneratorTarget(&ti->second);
+ cmGeneratorTarget* gt = *ti;
cmQtAutoGeneratorInitializer::InitializeAutogenSources(gt);
filteredTargets.push_back(gt);
@@ -1584,7 +1596,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes,
cmTarget* t = &ti->second;
cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg);
this->GeneratorTargets[t] = gt;
- lg->AddGeneratorTarget(t, gt);
+ lg->AddGeneratorTarget(gt);
}
}
@@ -2694,23 +2706,22 @@ void cmGlobalGenerator::GetTargetSets(TargetDependSet& projectTargets,
{
continue;
}
- cmMakefile* mf = (*i)->GetMakefile();
// Get the targets in the makefile
- cmTargets &tgts = mf->GetTargets();
+ std::vector<cmGeneratorTarget*> tgts = (*i)->GetGeneratorTargets();
// loop over all the targets
- for (cmTargets::iterator l = tgts.begin(); l != tgts.end(); ++l)
+ for (std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- cmTarget* target = &l->second;
- cmGeneratorTarget* gt = this->GetGeneratorTarget(target);
- if(this->IsRootOnlyTarget(gt) &&
- target->GetMakefile() != root->GetMakefile())
+ cmGeneratorTarget* target = *l;
+ if(this->IsRootOnlyTarget(target) &&
+ target->GetLocalGenerator() != root)
{
continue;
}
// put the target in the set of original targets
- originalTargets.insert(gt);
+ originalTargets.insert(target);
// Get the set of targets that depend on target
- this->AddTargetDepends(gt, projectTargets);
+ this->AddTargetDepends(target, projectTargets);
}
}
}
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index c59d42d..18f5329 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -42,6 +42,10 @@ class cmInstallTargetGenerator;
class cmInstallFilesGenerator;
class cmExportBuildFileGenerator;
+typedef std::map<cmTarget const*,
+ cmGeneratorTarget*,
+ cmTarget::StrictTargetComparison> cmGeneratorTargetsType;
+
/** \class cmGlobalGenerator
* \brief Responsible for overseeing the generation process for the entire tree
*
diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx
index 45a1509..1bcbd26 100644
--- a/Source/cmGlobalGhsMultiGenerator.cxx
+++ b/Source/cmGlobalGhsMultiGenerator.cxx
@@ -287,8 +287,8 @@ void cmGlobalGhsMultiGenerator::Generate()
{
cmLocalGhsMultiGenerator *lg =
static_cast<cmLocalGhsMultiGenerator *>(this->LocalGenerators[i]);
- cmGeneratorTargetsType tgts = lg->GetGeneratorTargets();
- this->UpdateBuildFiles(&tgts);
+ std::vector<cmGeneratorTarget*> tgts = lg->GetGeneratorTargets();
+ this->UpdateBuildFiles(tgts);
}
}
@@ -481,15 +481,15 @@ cmGlobalGhsMultiGenerator::GetFileNameFromPath(std::string const &path)
}
void cmGlobalGhsMultiGenerator::UpdateBuildFiles(
- cmGeneratorTargetsType *tgts)
+ std::vector<cmGeneratorTarget*> tgts)
{
- for (cmGeneratorTargetsType::iterator tgtsI = tgts->begin();
- tgtsI != tgts->end(); ++tgtsI)
+ for (std::vector<cmGeneratorTarget*>::iterator tgtsI = tgts.begin();
+ tgtsI != tgts.end(); ++tgtsI)
{
- const cmTarget *tgt(tgtsI->first);
+ const cmGeneratorTarget *tgt = *tgtsI;
if (IsTgtForBuild(tgt))
{
- char const *rawFolderName = tgtsI->first->GetProperty("FOLDER");
+ char const *rawFolderName = tgt->GetProperty("FOLDER");
if (NULL == rawFolderName)
{
rawFolderName = "";
@@ -510,19 +510,18 @@ void cmGlobalGhsMultiGenerator::UpdateBuildFiles(
*this->TargetFolderBuildStreams[folderName] << foldNameRelBuildFile
<< " ";
GhsMultiGpj::WriteGpjTag(cmGhsMultiTargetGenerator::GetGpjTag(
- tgtsI->second),
+ tgt),
this->TargetFolderBuildStreams[folderName]);
}
}
}
-bool cmGlobalGhsMultiGenerator::IsTgtForBuild(const cmTarget *tgt)
+bool cmGlobalGhsMultiGenerator::IsTgtForBuild(const cmGeneratorTarget *tgt)
{
const std::string config =
- tgt->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE");
+ tgt->Target->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE");
std::vector<cmSourceFile *> tgtSources;
- cmGeneratorTarget* gt = this->GetGeneratorTarget(tgt);
- gt->GetSourceFiles(tgtSources, config);
+ tgt->GetSourceFiles(tgtSources, config);
bool tgtInBuild = true;
char const *excludeFromAll = tgt->GetProperty("EXCLUDE_FROM_ALL");
if (NULL != excludeFromAll && '1' == excludeFromAll[0] &&
diff --git a/Source/cmGlobalGhsMultiGenerator.h b/Source/cmGlobalGhsMultiGenerator.h
index 8f88d4f..480cd6a 100644
--- a/Source/cmGlobalGhsMultiGenerator.h
+++ b/Source/cmGlobalGhsMultiGenerator.h
@@ -110,8 +110,8 @@ private:
std::vector<cmsys::String>::const_iterator end,
GhsMultiGpj::Types projType);
static std::string GetFileNameFromPath(std::string const &path);
- void UpdateBuildFiles(cmGeneratorTargetsType *tgts);
- bool IsTgtForBuild(const cmTarget *tgt);
+ void UpdateBuildFiles(std::vector<cmGeneratorTarget*> tgts);
+ bool IsTgtForBuild(const cmGeneratorTarget *tgt);
std::vector<cmGeneratedFileStream *> TargetSubProjects;
std::map<std::string, cmGeneratedFileStream *> TargetFolderBuildStreams;
diff --git a/Source/cmGlobalKdevelopGenerator.cxx b/Source/cmGlobalKdevelopGenerator.cxx
index 4eec3fb..7c6c48c 100644
--- a/Source/cmGlobalKdevelopGenerator.cxx
+++ b/Source/cmGlobalKdevelopGenerator.cxx
@@ -68,13 +68,14 @@ void cmGlobalKdevelopGenerator::Generate()
for (std::vector<cmLocalGenerator*>::const_iterator lg=lgs.begin();
lg!=lgs.end(); lg++)
{
- cmGeneratorTargetsType const& targets = (*lg)->GetGeneratorTargets();
- for (cmGeneratorTargetsType::const_iterator ti = targets.begin();
- ti != targets.end(); ti++)
+ std::vector<cmGeneratorTarget*> const& targets =
+ (*lg)->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::const_iterator ti =
+ targets.begin(); ti != targets.end(); ti++)
{
- if (ti->second->GetType()==cmState::EXECUTABLE)
+ if ((*ti)->GetType()==cmState::EXECUTABLE)
{
- executable = ti->second->GetLocation("");
+ executable = (*ti)->GetLocation("");
break;
}
}
@@ -132,14 +133,13 @@ bool cmGlobalKdevelopGenerator
}
//get all sources
- cmTargets& targets=makefile->GetTargets();
- for (cmTargets::iterator ti = targets.begin();
+ std::vector<cmGeneratorTarget*> targets=(*it)->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ti++)
{
std::vector<cmSourceFile*> sources;
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&ti->second);
- gt->GetSourceFiles(sources, ti->second.GetMakefile()
+ cmGeneratorTarget* gt = *ti;
+ gt->GetSourceFiles(sources, gt->Target->GetMakefile()
->GetSafeDefinition("CMAKE_BUILD_TYPE"));
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
si!=sources.end(); si++)
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 89a6dff..2671f4d 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -719,7 +719,7 @@ void cmGlobalNinjaGenerator
{
// Compute full path to object file directory for this target.
std::string dir;
- dir += gt->Makefile->GetCurrentBinaryDirectory();
+ dir += gt->LocalGenerator->GetCurrentBinaryDirectory();
dir += "/";
dir += gt->LocalGenerator->GetTargetDirectory(gt);
dir += "/";
@@ -886,7 +886,7 @@ void cmGlobalNinjaGenerator::WriteDisclaimer(std::ostream& os)
<< cmVersion::GetMinorVersion() << "\n\n";
}
-void cmGlobalNinjaGenerator::AddDependencyToAll(cmTarget* target)
+void cmGlobalNinjaGenerator::AddDependencyToAll(cmGeneratorTarget* target)
{
this->AppendTargetOutputs(target, this->AllDependencies);
}
@@ -912,18 +912,16 @@ void cmGlobalNinjaGenerator::WriteAssumedSourceDependencies()
void
cmGlobalNinjaGenerator
-::AppendTargetOutputs(cmTarget const* target, cmNinjaDeps& outputs)
+::AppendTargetOutputs(cmGeneratorTarget const* target, cmNinjaDeps& outputs)
{
std::string configName =
- target->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE");
-
- cmGeneratorTarget *gtgt = this->GetGeneratorTarget(target);
+ target->Target->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE");
// for frameworks, we want the real name, not smple name
// frameworks always appear versioned, and the build.ninja
// will always attempt to manage symbolic links instead
// of letting cmOSXBundleGenerator do it.
- bool realname = gtgt->IsFrameworkOnApple();
+ bool realname = target->IsFrameworkOnApple();
switch (target->GetType()) {
case cmState::EXECUTABLE:
@@ -932,13 +930,13 @@ cmGlobalNinjaGenerator
case cmState::MODULE_LIBRARY:
{
outputs.push_back(this->ConvertToNinjaPath(
- gtgt->GetFullPath(configName, false, realname)));
+ target->GetFullPath(configName, false, realname)));
break;
}
case cmState::OBJECT_LIBRARY:
case cmState::UTILITY: {
std::string path = this->ConvertToNinjaPath(
- target->GetMakefile()->GetCurrentBinaryDirectory());
+ target->GetLocalGenerator()->GetCurrentBinaryDirectory());
if (path.empty() || path == ".")
outputs.push_back(target->GetName());
else {
@@ -962,16 +960,15 @@ cmGlobalNinjaGenerator
void
cmGlobalNinjaGenerator
-::AppendTargetDepends(cmTarget const* target, cmNinjaDeps& outputs)
+::AppendTargetDepends(cmGeneratorTarget const* target, cmNinjaDeps& outputs)
{
if (target->GetType() == cmState::GLOBAL_TARGET) {
// Global targets only depend on other utilities, which may not appear in
// the TargetDepends set (e.g. "all").
- std::set<std::string> const& utils = target->GetUtilities();
+ std::set<std::string> const& utils = target->Target->GetUtilities();
std::copy(utils.begin(), utils.end(), std::back_inserter(outputs));
} else {
- cmGeneratorTarget* gt = this->GetGeneratorTarget(target);
- cmTargetDependSet const& targetDeps = this->GetTargetDirectDepends(gt);
+ cmTargetDependSet const& targetDeps = this->GetTargetDirectDepends(target);
for (cmTargetDependSet::const_iterator i = targetDeps.begin();
i != targetDeps.end(); ++i)
{
@@ -979,13 +976,13 @@ cmGlobalNinjaGenerator
{
continue;
}
- this->AppendTargetOutputs((*i)->Target, outputs);
+ this->AppendTargetOutputs(*i, outputs);
}
}
}
void cmGlobalNinjaGenerator::AddTargetAlias(const std::string& alias,
- cmTarget* target) {
+ cmGeneratorTarget* target) {
cmNinjaDeps outputs;
this->AppendTargetOutputs(target, outputs);
// Mark the target's outputs as ambiguous to ensure that no other target uses
diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h
index 292f7c7..7547f16 100644
--- a/Source/cmGlobalNinjaGenerator.h
+++ b/Source/cmGlobalNinjaGenerator.h
@@ -285,9 +285,11 @@ public:
ASD.insert(deps.begin(), deps.end());
}
- void AppendTargetOutputs(cmTarget const* target, cmNinjaDeps& outputs);
- void AppendTargetDepends(cmTarget const* target, cmNinjaDeps& outputs);
- void AddDependencyToAll(cmTarget* target);
+ void AppendTargetOutputs(cmGeneratorTarget const* target,
+ cmNinjaDeps& outputs);
+ void AppendTargetDepends(cmGeneratorTarget const* target,
+ cmNinjaDeps& outputs);
+ void AddDependencyToAll(cmGeneratorTarget* target);
void AddDependencyToAll(const std::string& input);
const std::vector<cmLocalGenerator*>& GetLocalGenerators() const {
@@ -299,7 +301,7 @@ public:
int GetRuleCmdLength(const std::string& name) {
return RuleCmdLength[name]; }
- void AddTargetAlias(const std::string& alias, cmTarget* target);
+ void AddTargetAlias(const std::string& alias, cmGeneratorTarget* target);
virtual void ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const;
@@ -388,7 +390,7 @@ private:
/// The mapping from source file to assumed dependencies.
std::map<std::string, std::set<std::string> > AssumedSourceDependencies;
- typedef std::map<std::string, cmTarget*> TargetAliasMap;
+ typedef std::map<std::string, cmGeneratorTarget*> TargetAliasMap;
TargetAliasMap TargetAliases;
};
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx
index 44e3de6..b4a915c 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.cxx
+++ b/Source/cmGlobalUnixMakefileGenerator3.cxx
@@ -16,7 +16,6 @@
#include "cmake.h"
#include "cmGeneratedFileStream.h"
#include "cmSourceFile.h"
-#include "cmTarget.h"
#include "cmGeneratorTarget.h"
#include "cmAlgorithms.h"
@@ -116,7 +115,7 @@ cmGlobalUnixMakefileGenerator3
{
// Compute full path to object file directory for this target.
std::string dir;
- dir += gt->Makefile->GetCurrentBinaryDirectory();
+ dir += gt->LocalGenerator->GetCurrentBinaryDirectory();
dir += "/";
dir += gt->LocalGenerator->GetTargetDirectory(gt);
dir += "/";
@@ -423,17 +422,18 @@ void cmGlobalUnixMakefileGenerator3
{
lg = static_cast<cmLocalUnixMakefileGenerator3 *>(lGenerators[i]);
// for all of out targets
- for (cmTargets::iterator l = lg->GetMakefile()->GetTargets().begin();
- l != lg->GetMakefile()->GetTargets().end(); l++)
+ std::vector<cmGeneratorTarget*> tgts = lg->GetGeneratorTargets();
+ for (std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); l++)
{
- if((l->second.GetType() == cmState::EXECUTABLE) ||
- (l->second.GetType() == cmState::STATIC_LIBRARY) ||
- (l->second.GetType() == cmState::SHARED_LIBRARY) ||
- (l->second.GetType() == cmState::MODULE_LIBRARY) ||
- (l->second.GetType() == cmState::OBJECT_LIBRARY) ||
- (l->second.GetType() == cmState::UTILITY))
+ if(((*l)->GetType() == cmState::EXECUTABLE) ||
+ ((*l)->GetType() == cmState::STATIC_LIBRARY) ||
+ ((*l)->GetType() == cmState::SHARED_LIBRARY) ||
+ ((*l)->GetType() == cmState::MODULE_LIBRARY) ||
+ ((*l)->GetType() == cmState::OBJECT_LIBRARY) ||
+ ((*l)->GetType() == cmState::UTILITY))
{
- cmGeneratorTarget* gt = this->GetGeneratorTarget(&l->second);
+ cmGeneratorTarget* gt = *l;
std::string tname = lg->GetRelativeTargetDirectory(gt);
tname += "/DependInfo.cmake";
cmSystemTools::ConvertToUnixSlashes(tname);
@@ -460,11 +460,11 @@ cmGlobalUnixMakefileGenerator3
// The directory-level rule should depend on the target-level rules
// for all targets in the directory.
std::vector<std::string> depends;
- cmGeneratorTargetsType targets = lg->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator l = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = lg->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = targets.begin();
l != targets.end(); ++l)
{
- cmGeneratorTarget* gtarget = l->second;
+ cmGeneratorTarget* gtarget = *l;
int type = gtarget->GetType();
if((type == cmState::EXECUTABLE) ||
(type == cmState::STATIC_LIBRARY) ||
@@ -623,11 +623,11 @@ cmGlobalUnixMakefileGenerator3
lg = static_cast<cmLocalUnixMakefileGenerator3 *>
(this->LocalGenerators[i]);
// for each target Generate the rule files for each target.
- cmGeneratorTargetsType targets = lg->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = lg->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- cmGeneratorTarget* gtarget = t->second;
+ cmGeneratorTarget* gtarget = *t;
// Don't emit the same rule twice (e.g. two targets with the same
// simple name)
int type = gtarget->GetType();
@@ -720,11 +720,11 @@ cmGlobalUnixMakefileGenerator3
depends.push_back("cmake_check_build_system");
// for each target Generate the rule files for each target.
- cmGeneratorTargetsType targets = lg->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = lg->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- cmGeneratorTarget* gtarget = t->second;
+ cmGeneratorTarget* gtarget = *t;
int type = gtarget->GetType();
std::string name = gtarget->GetName();
if (!name.empty()
@@ -741,7 +741,7 @@ cmGlobalUnixMakefileGenerator3
makefileName = localName;
makefileName += "/build.make";
- bool needRequiresStep = this->NeedRequiresStep(*gtarget->Target);
+ bool needRequiresStep = this->NeedRequiresStep(gtarget);
lg->WriteDivider(ruleFileStream);
ruleFileStream
@@ -778,7 +778,7 @@ cmGlobalUnixMakefileGenerator3
std::ostringstream progressArg;
const char* sep = "";
std::vector<unsigned long>& progFiles =
- this->ProgressMap[gtarget->Target].Marks;
+ this->ProgressMap[gtarget].Marks;
for (std::vector<unsigned long>::iterator i = progFiles.begin();
i != progFiles.end(); ++i)
{
@@ -914,13 +914,11 @@ void cmGlobalUnixMakefileGenerator3::InitializeProgressMarks()
lgi != this->LocalGenerators.end(); ++lgi)
{
cmLocalGenerator* lg = *lgi;
- cmMakefile* mf = lg->GetMakefile();
- cmTargets const& targets = mf->GetTargets();
- for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t)
+ std::vector<cmGeneratorTarget*> targets = lg->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
+ t != targets.end(); ++t)
{
- cmTarget const& target = t->second;
-
- cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
+ cmGeneratorTarget* gt = *t;
cmLocalGenerator* tlg = gt->GetLocalGenerator();
@@ -966,7 +964,7 @@ cmGlobalUnixMakefileGenerator3
size_t count = 0;
if(emitted.insert(target).second)
{
- count = this->ProgressMap[target->Target].Marks.size();
+ count = this->ProgressMap[target].Marks.size();
TargetDependSet const& depends = this->GetTargetDirectDepends(target);
for(TargetDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
@@ -1003,7 +1001,7 @@ void
cmGlobalUnixMakefileGenerator3::RecordTargetProgress(
cmMakefileTargetGenerator* tg)
{
- TargetProgress& tp = this->ProgressMap[tg->GetTarget()];
+ TargetProgress& tp = this->ProgressMap[tg->GetGeneratorTarget()];
tp.NumberOfActions = tg->GetNumberOfProgressActions();
tp.VariableFile = tg->GetProgressFileNameFull();
}
@@ -1089,11 +1087,12 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule
if (lg2 == lg || lg->GetMakefile()->IsRootMakefile())
{
// for each target Generate the rule files for each target.
- cmTargets& targets = lg2->GetMakefile()->GetTargets();
- for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
+ std::vector<cmGeneratorTarget*> targets = lg2->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
+ t != targets.end(); ++t)
{
- cmTarget const& target = t->second;
- cmState::TargetType type = target.GetType();
+ cmGeneratorTarget* target = *t;
+ cmState::TargetType type = target->GetType();
if((type == cmState::EXECUTABLE) ||
(type == cmState::STATIC_LIBRARY) ||
(type == cmState::SHARED_LIBRARY) ||
@@ -1102,7 +1101,7 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule
(type == cmState::GLOBAL_TARGET) ||
(type == cmState::UTILITY))
{
- std::string name = target.GetName();
+ std::string name = target->GetName();
if(emittedTargets.insert(name).second)
{
path = "... ";
@@ -1129,19 +1128,19 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule
bool cmGlobalUnixMakefileGenerator3
-::NeedRequiresStep(cmTarget const& target)
+::NeedRequiresStep(const cmGeneratorTarget* target)
{
std::set<std::string> languages;
- cmGeneratorTarget* gtgt = this->GetGeneratorTarget(&target);
- gtgt->GetLanguages(languages,
- target.GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE"));
+ target->GetLanguages(languages,
+ target->Target->GetMakefile()
+ ->GetSafeDefinition("CMAKE_BUILD_TYPE"));
for(std::set<std::string>::const_iterator l = languages.begin();
l != languages.end(); ++l)
{
std::string var = "CMAKE_NEEDS_REQUIRES_STEP_";
var += *l;
var += "_FLAG";
- if(target.GetMakefile()->GetDefinition(var))
+ if(target->Target->GetMakefile()->GetDefinition(var))
{
return true;
}
diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h
index 5f39c79..63ffcb4 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.h
+++ b/Source/cmGlobalUnixMakefileGenerator3.h
@@ -154,7 +154,7 @@ protected:
cmGeneratorTarget* target);
// does this generator need a requires step for any of its targets
- bool NeedRequiresStep(cmTarget const&);
+ bool NeedRequiresStep(cmGeneratorTarget const*);
// Target name hooks for superclass.
const char* GetAllTargetName() const { return "all"; }
@@ -192,8 +192,8 @@ protected:
std::vector<unsigned long> Marks;
void WriteProgressVariables(unsigned long total, unsigned long& current);
};
- typedef std::map<cmTarget const*, TargetProgress,
- cmStrictTargetComparison> ProgressMapType;
+ typedef std::map<cmGeneratorTarget const*, TargetProgress,
+ cmGeneratorTarget::StrictTargetComparison> ProgressMapType;
ProgressMapType ProgressMap;
size_t CountProgressMarksInTarget(cmGeneratorTarget const* target,
diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx
index 161b532..e568704 100644
--- a/Source/cmGlobalVisualStudio10Generator.cxx
+++ b/Source/cmGlobalVisualStudio10Generator.cxx
@@ -331,7 +331,7 @@ void cmGlobalVisualStudio10Generator::Generate()
this->cmGlobalVisualStudio8Generator::Generate();
if(this->LongestSource.Length > 0)
{
- cmMakefile* mf = this->LongestSource.Target->GetMakefile();
+ cmLocalGenerator* lg = this->LongestSource.Target->GetLocalGenerator();
std::ostringstream e;
e <<
"The binary and/or source directory paths may be too long to generate "
@@ -346,13 +346,13 @@ void cmGlobalVisualStudio10Generator::Generate()
" " << this->LongestSource.SourceFile->GetFullPath() << "\n"
"This is because some Visual Studio tools would append the relative "
"path to the end of the referencing directory path, as in:\n"
- " " << mf->GetCurrentBinaryDirectory() << "/"
+ " " << lg->GetCurrentBinaryDirectory() << "/"
<< this->LongestSource.SourceRel << "\n"
"and then incorrectly complain that the file does not exist because "
"the path length is too long for some internal buffer or API. "
"To avoid this problem CMake must use a full path for this file "
"which then triggers the VS 10 property dialog bug.";
- mf->IssueMessage(cmake::WARNING, e.str().c_str());
+ lg->IssueMessage(cmake::WARNING, e.str().c_str());
}
}
@@ -591,9 +591,11 @@ cmGlobalVisualStudio10Generator
//----------------------------------------------------------------------------
void cmGlobalVisualStudio10Generator::PathTooLong(
- cmTarget* target, cmSourceFile const* sf, std::string const& sfRel)
+ cmGeneratorTarget *target, cmSourceFile const* sf,
+ std::string const& sfRel)
{
- size_t len = (strlen(target->GetMakefile()->GetCurrentBinaryDirectory()) +
+ size_t len =
+ (strlen(target->GetLocalGenerator()->GetCurrentBinaryDirectory()) +
1 + sfRel.length());
if(len > this->LongestSource.Length)
{
diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h
index 7600a0d..6bf4740 100644
--- a/Source/cmGlobalVisualStudio10Generator.h
+++ b/Source/cmGlobalVisualStudio10Generator.h
@@ -95,7 +95,7 @@ public:
/** Generate an <output>.rule file path for a given command output. */
virtual std::string GenerateRuleFile(std::string const& output) const;
- void PathTooLong(cmTarget* target, cmSourceFile const* sf,
+ void PathTooLong(cmGeneratorTarget* target, cmSourceFile const* sf,
std::string const& sfRel);
virtual const char* GetToolsVersion() { return "4.0"; }
@@ -139,7 +139,7 @@ private:
{
LongestSourcePath(): Length(0), Target(0), SourceFile(0) {}
size_t Length;
- cmTarget* Target;
+ cmGeneratorTarget* Target;
cmSourceFile const* SourceFile;
std::string SourceRel;
};
diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx
index 12eccf9..bb494f1 100644
--- a/Source/cmGlobalVisualStudio6Generator.cxx
+++ b/Source/cmGlobalVisualStudio6Generator.cxx
@@ -223,7 +223,7 @@ void cmGlobalVisualStudio6Generator
tt = orderedProjectTargets.begin();
tt != orderedProjectTargets.end(); ++tt)
{
- cmTarget const* target = (*tt)->Target;
+ cmGeneratorTarget const* target = *tt;
if(target->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
@@ -235,14 +235,15 @@ void cmGlobalVisualStudio6Generator
std::string project = target->GetName();
std::string location = expath;
this->WriteExternalProject(fout, project.c_str(),
- location.c_str(), target->GetUtilities());
+ location.c_str(), target->Target->GetUtilities());
}
else
{
std::string dspname = GetVS6TargetName(target->GetName());
- std::string dir = target->GetMakefile()->GetCurrentBinaryDirectory();
+ std::string dir =
+ target->GetLocalGenerator()->GetCurrentBinaryDirectory();
dir = root->Convert(dir.c_str(), cmLocalGenerator::START_OUTPUT);
- this->WriteProject(fout, dspname.c_str(), dir.c_str(), *target);
+ this->WriteProject(fout, dspname.c_str(), dir.c_str(), target);
}
}
@@ -287,9 +288,9 @@ void cmGlobalVisualStudio6Generator::OutputDSWFile()
// Note, that dependencies from executables to
// the libraries it uses are also done here
void cmGlobalVisualStudio6Generator::WriteProject(std::ostream& fout,
- const std::string& dspname,
- const char* dir,
- cmTarget const& target)
+ const std::string& dspname,
+ const char* dir,
+ const cmGeneratorTarget *target)
{
fout << "#########################################################"
"######################\n\n";
@@ -298,7 +299,7 @@ void cmGlobalVisualStudio6Generator::WriteProject(std::ostream& fout,
fout << "Package=<5>\n{{{\n}}}\n\n";
fout << "Package=<4>\n";
fout << "{{{\n";
- VSDependSet const& depends = this->VSTargetDepends[&target];
+ VSDependSet const& depends = this->VSTargetDepends[target];
for(VSDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
{
@@ -309,7 +310,7 @@ void cmGlobalVisualStudio6Generator::WriteProject(std::ostream& fout,
}
fout << "}}}\n\n";
- UtilityDependsMap::iterator ui = this->UtilityDepends.find(&target);
+ UtilityDependsMap::iterator ui = this->UtilityDepends.find(target);
if(ui != this->UtilityDepends.end())
{
const char* uname = ui->second.c_str();
@@ -382,12 +383,14 @@ void cmGlobalVisualStudio6Generator::WriteDSWHeader(std::ostream& fout)
//----------------------------------------------------------------------------
std::string
-cmGlobalVisualStudio6Generator::WriteUtilityDepend(cmTarget const* target)
+cmGlobalVisualStudio6Generator::WriteUtilityDepend(
+ const cmGeneratorTarget *target)
{
std::string pname = target->GetName();
pname += "_UTILITY";
pname = GetVS6TargetName(pname.c_str());
- std::string fname = target->GetMakefile()->GetCurrentBinaryDirectory();
+ std::string fname =
+ target->GetLocalGenerator()->GetCurrentBinaryDirectory();
fname += "/";
fname += pname;
fname += ".dsp";
diff --git a/Source/cmGlobalVisualStudio6Generator.h b/Source/cmGlobalVisualStudio6Generator.h
index e9b24ea..993a48f 100644
--- a/Source/cmGlobalVisualStudio6Generator.h
+++ b/Source/cmGlobalVisualStudio6Generator.h
@@ -15,8 +15,6 @@
#include "cmGlobalVisualStudioGenerator.h"
#include "cmGlobalGeneratorFactory.h"
-class cmTarget;
-
/** \class cmGlobalVisualStudio6Generator
* \brief Write a Unix makefiles.
*
@@ -94,12 +92,12 @@ private:
void WriteDSWHeader(std::ostream& fout);
void WriteProject(std::ostream& fout,
const std::string& name, const char* path,
- cmTarget const& t);
+ cmGeneratorTarget const* t);
void WriteExternalProject(std::ostream& fout,
const std::string& name, const char* path,
const std::set<std::string>& dependencies);
void WriteDSWFooter(std::ostream& fout);
- virtual std::string WriteUtilityDepend(cmTarget const* target);
+ virtual std::string WriteUtilityDepend(const cmGeneratorTarget *target);
std::string MSDevCommand;
bool MSDevCommandInitialized;
std::string const& GetMSDevCommand();
diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx
index 9bb37ce..8227b82 100644
--- a/Source/cmGlobalVisualStudio71Generator.cxx
+++ b/Source/cmGlobalVisualStudio71Generator.cxx
@@ -152,7 +152,7 @@ void
cmGlobalVisualStudio71Generator::WriteProject(std::ostream& fout,
const std::string& dspname,
const char* dir,
- cmTarget const& t)
+ cmGeneratorTarget const* t)
{
// check to see if this is a fortran build
const char* ext = ".vcproj";
@@ -163,7 +163,7 @@ cmGlobalVisualStudio71Generator::WriteProject(std::ostream& fout,
ext = ".vfproj";
project = "Project(\"{6989167D-11E4-40FE-8C1A-2192A86A7E90}\") = \"";
}
- const char* targetExt = t.GetProperty("GENERATOR_FILE_NAME_EXT");
+ const char* targetExt = t->GetProperty("GENERATOR_FILE_NAME_EXT");
if(targetExt)
{
ext = targetExt;
@@ -180,7 +180,7 @@ cmGlobalVisualStudio71Generator::WriteProject(std::ostream& fout,
fout <<"EndProject\n";
- UtilityDependsMap::iterator ui = this->UtilityDepends.find(&t);
+ UtilityDependsMap::iterator ui = this->UtilityDepends.find(t);
if(ui != this->UtilityDepends.end())
{
const char* uname = ui->second.c_str();
@@ -204,9 +204,9 @@ void
cmGlobalVisualStudio71Generator
::WriteProjectDepends(std::ostream& fout,
const std::string&,
- const char*, cmTarget const& target)
+ const char*, cmGeneratorTarget const* target)
{
- VSDependSet const& depends = this->VSTargetDepends[&target];
+ VSDependSet const& depends = this->VSTargetDepends[target];
for(VSDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
{
@@ -215,7 +215,7 @@ cmGlobalVisualStudio71Generator
if(guid.empty())
{
std::string m = "Target: ";
- m += target.GetName();
+ m += target->GetName();
m += " depends on unknown target: ";
m += name;
cmSystemTools::Error(m.c_str());
diff --git a/Source/cmGlobalVisualStudio71Generator.h b/Source/cmGlobalVisualStudio71Generator.h
index 7f88e34..5035fda 100644
--- a/Source/cmGlobalVisualStudio71Generator.h
+++ b/Source/cmGlobalVisualStudio71Generator.h
@@ -59,10 +59,10 @@ protected:
std::ostream& fout, std::vector<std::string> const& configs);
virtual void WriteProject(std::ostream& fout,
const std::string& name, const char* path,
- cmTarget const& t);
+ const cmGeneratorTarget *t);
virtual void WriteProjectDepends(std::ostream& fout,
const std::string& name, const char* path,
- cmTarget const& t);
+ cmGeneratorTarget const* t);
virtual void WriteProjectConfigurations(
std::ostream& fout, const std::string& name, cmState::TargetType type,
std::vector<std::string> const& configs,
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index 1909f21..5473247 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -441,7 +441,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution(
for(OrderedTargetDependSet::const_iterator tt =
projectTargets.begin(); tt != projectTargets.end(); ++tt)
{
- cmTarget const* target = (*tt)->Target;
+ cmGeneratorTarget const* target = *tt;
if(target->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
@@ -459,7 +459,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution(
project.c_str(),
location.c_str(),
target->GetProperty("VS_PROJECT_TYPE"),
- target->GetUtilities());
+ target->Target->GetUtilities());
written = true;
}
else
@@ -468,9 +468,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution(
target->GetProperty("GENERATOR_FILE_NAME");
if(vcprojName)
{
- cmLocalGenerator* lg =
- root->GetGlobalGenerator()->GetGeneratorTarget(target)
- ->GetLocalGenerator();
+ cmLocalGenerator* lg = target->GetLocalGenerator();
std::string dir = lg->GetCurrentBinaryDirectory();
dir = root->Convert(dir.c_str(),
cmLocalGenerator::START_OUTPUT);
@@ -479,7 +477,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution(
dir = ""; // msbuild cannot handle ".\" prefix
}
this->WriteProject(fout, vcprojName, dir.c_str(),
- *target);
+ target);
written = true;
}
}
@@ -535,19 +533,19 @@ void cmGlobalVisualStudio7Generator::WriteTargetDepends(
for(OrderedTargetDependSet::const_iterator tt =
projectTargets.begin(); tt != projectTargets.end(); ++tt)
{
- cmTarget const* target = (*tt)->Target;
+ cmGeneratorTarget const* target = *tt;
if(target->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
- cmMakefile* mf = target->GetMakefile();
const char *vcprojName =
target->GetProperty("GENERATOR_FILE_NAME");
if (vcprojName)
{
- std::string dir = mf->GetCurrentSourceDirectory();
+ std::string dir = target->GetLocalGenerator()
+ ->GetCurrentSourceDirectory();
this->WriteProjectDepends(fout, vcprojName,
- dir.c_str(), *target);
+ dir.c_str(), target);
}
}
}
@@ -687,7 +685,8 @@ cmGlobalVisualStudio7Generator::ConvertToSolutionPath(const char* path)
// the libraries it uses are also done here
void cmGlobalVisualStudio7Generator::WriteProject(std::ostream& fout,
const std::string& dspname,
- const char* dir, cmTarget const& target)
+ const char* dir,
+ cmGeneratorTarget const* target)
{
// check to see if this is a fortran build
const char* ext = ".vcproj";
@@ -705,7 +704,7 @@ void cmGlobalVisualStudio7Generator::WriteProject(std::ostream& fout,
<< dspname << ext << "\", \"{"
<< this->GetGUID(dspname) << "}\"\nEndProject\n";
- UtilityDependsMap::iterator ui = this->UtilityDepends.find(&target);
+ UtilityDependsMap::iterator ui = this->UtilityDepends.find(target);
if(ui != this->UtilityDepends.end())
{
const char* uname = ui->second.c_str();
@@ -727,11 +726,11 @@ void
cmGlobalVisualStudio7Generator
::WriteProjectDepends(std::ostream& fout,
const std::string& dspname,
- const char*, cmTarget const& target)
+ const char*, cmGeneratorTarget const* target)
{
int depcount = 0;
std::string dspguid = this->GetGUID(dspname);
- VSDependSet const& depends = this->VSTargetDepends[&target];
+ VSDependSet const& depends = this->VSTargetDepends[target];
for(VSDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
{
@@ -740,7 +739,7 @@ cmGlobalVisualStudio7Generator
if(guid.empty())
{
std::string m = "Target: ";
- m += target.GetName();
+ m += target->GetName();
m += " depends on unknown target: ";
m += name;
cmSystemTools::Error(m.c_str());
@@ -749,7 +748,7 @@ cmGlobalVisualStudio7Generator
depcount++;
}
- UtilityDependsMap::iterator ui = this->UtilityDepends.find(&target);
+ UtilityDependsMap::iterator ui = this->UtilityDepends.find(target);
if(ui != this->UtilityDepends.end())
{
const char* uname = ui->second.c_str();
@@ -889,13 +888,14 @@ void cmGlobalVisualStudio7Generator::WriteSLNHeader(std::ostream& fout)
//----------------------------------------------------------------------------
std::string
-cmGlobalVisualStudio7Generator::WriteUtilityDepend(cmTarget const* target)
+cmGlobalVisualStudio7Generator::WriteUtilityDepend(
+ cmGeneratorTarget const* target)
{
std::vector<std::string> configs;
- target->GetMakefile()->GetConfigurations(configs);
+ target->Target->GetMakefile()->GetConfigurations(configs);
std::string pname = target->GetName();
pname += "_UTILITY";
- std::string fname = target->GetMakefile()->GetCurrentBinaryDirectory();
+ std::string fname = target->GetLocalGenerator()->GetCurrentBinaryDirectory();
fname += "/";
fname += pname;
fname += ".vcproj";
diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h
index 4ef0990..6a0e5e9 100644
--- a/Source/cmGlobalVisualStudio7Generator.h
+++ b/Source/cmGlobalVisualStudio7Generator.h
@@ -94,7 +94,8 @@ public:
/** Return true if the target project file should have the option
LinkLibraryDependencies and link to .sln dependencies. */
- virtual bool NeedLinkLibraryDependencies(cmTarget&) { return false; }
+ virtual bool NeedLinkLibraryDependencies(cmGeneratorTarget*)
+ { return false; }
const char* GetIntelProjectVersion();
@@ -123,10 +124,10 @@ protected:
std::vector<cmLocalGenerator*>& generators);
virtual void WriteProject(std::ostream& fout,
const std::string& name, const char* path,
- cmTarget const& t);
+ const cmGeneratorTarget *t);
virtual void WriteProjectDepends(std::ostream& fout,
const std::string& name, const char* path,
- cmTarget const&t);
+ cmGeneratorTarget const* t);
virtual void WriteProjectConfigurations(
std::ostream& fout, const std::string& name, cmState::TargetType type,
std::vector<std::string> const& configs,
@@ -136,7 +137,7 @@ protected:
cmLocalGenerator* root);
virtual void WriteSLNFooter(std::ostream& fout);
virtual void WriteSLNHeader(std::ostream& fout);
- virtual std::string WriteUtilityDepend(cmTarget const* target);
+ virtual std::string WriteUtilityDepend(const cmGeneratorTarget *target);
virtual void WriteTargetsToSolution(
std::ostream& fout,
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx
index 61b19cf..bdb1b25 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -256,7 +256,7 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget()
noCommandLines);
cmGeneratorTarget* gt = new cmGeneratorTarget(tgt, lg);
- lg->AddGeneratorTarget(tgt, gt);
+ lg->AddGeneratorTarget(gt);
this->AddGeneratorTarget(tgt, gt);
// Organize in the "predefined targets" folder:
@@ -441,9 +441,9 @@ bool cmGlobalVisualStudio8Generator::ComputeTargetDepends()
//----------------------------------------------------------------------------
void cmGlobalVisualStudio8Generator::WriteProjectDepends(
- std::ostream& fout, const std::string&, const char*, cmTarget const& t)
+ std::ostream& fout, const std::string&, const char*,
+ cmGeneratorTarget const* gt)
{
- cmGeneratorTarget* gt = this->GetGeneratorTarget(&t);
TargetDependSet const& unordered = this->GetTargetDirectDepends(gt);
OrderedTargetDependSet depends(unordered, std::string());
for(OrderedTargetDependSet::const_iterator i = depends.begin();
@@ -460,14 +460,15 @@ void cmGlobalVisualStudio8Generator::WriteProjectDepends(
//----------------------------------------------------------------------------
bool cmGlobalVisualStudio8Generator::NeedLinkLibraryDependencies(
- cmTarget& target)
+ cmGeneratorTarget *target)
{
// Look for utility dependencies that magically link.
for(std::set<std::string>::const_iterator ui =
- target.GetUtilities().begin();
- ui != target.GetUtilities().end(); ++ui)
+ target->Target->GetUtilities().begin();
+ ui != target->Target->GetUtilities().end(); ++ui)
{
- if(cmTarget* depTarget = this->FindTarget(ui->c_str()))
+ if(cmGeneratorTarget* depTarget =
+ target->GetLocalGenerator()->FindGeneratorTargetToUse(ui->c_str()))
{
if(depTarget->GetType() != cmState::INTERFACE_LIBRARY
&& depTarget->GetProperty("EXTERNAL_MSPROJECT"))
diff --git a/Source/cmGlobalVisualStudio8Generator.h b/Source/cmGlobalVisualStudio8Generator.h
index 60c63d1..b3093cc 100644
--- a/Source/cmGlobalVisualStudio8Generator.h
+++ b/Source/cmGlobalVisualStudio8Generator.h
@@ -60,7 +60,7 @@ public:
/** Return true if the target project file should have the option
LinkLibraryDependencies and link to .sln dependencies. */
- virtual bool NeedLinkLibraryDependencies(cmTarget& target);
+ virtual bool NeedLinkLibraryDependencies(cmGeneratorTarget* target);
/** Return true if building for Windows CE */
virtual bool TargetsWindowsCE() const {
@@ -91,7 +91,8 @@ protected:
virtual bool ComputeTargetDepends();
virtual void WriteProjectDepends(std::ostream& fout,
const std::string& name,
- const char* path, cmTarget const& t);
+ const char* path,
+ const cmGeneratorTarget *t);
std::string Name;
std::string WindowsCEVersion;
diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx
index 91ca9a3..b819dad 100644
--- a/Source/cmGlobalVisualStudioGenerator.cxx
+++ b/Source/cmGlobalVisualStudioGenerator.cxx
@@ -87,7 +87,7 @@ void cmGlobalVisualStudioGenerator::AddExtraIDETargets()
"Build all projects");
cmGeneratorTarget* gt = new cmGeneratorTarget(allBuild, gen[0]);
- gen[0]->AddGeneratorTarget(allBuild, gt);
+ gen[0]->AddGeneratorTarget(gt);
this->AddGeneratorTarget(allBuild, gt);
#if 0
@@ -108,19 +108,20 @@ void cmGlobalVisualStudioGenerator::AddExtraIDETargets()
for(std::vector<cmLocalGenerator*>::iterator i = gen.begin();
i != gen.end(); ++i)
{
- cmGeneratorTargetsType targets =
+ std::vector<cmGeneratorTarget*> targets =
(*i)->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- if (t->second->GetType() == cmState::GLOBAL_TARGET
- || t->first->IsImported())
+ cmGeneratorTarget* tgt = *t;
+ if (tgt->GetType() == cmState::GLOBAL_TARGET
+ || tgt->IsImported())
{
continue;
}
- if(!this->IsExcluded(gen[0], t->second))
+ if(!this->IsExcluded(gen[0], tgt))
{
- allBuild->AddUtility(t->second->GetName());
+ allBuild->AddUtility(tgt->GetName());
}
}
}
@@ -302,19 +303,20 @@ std::string cmGlobalVisualStudioGenerator::GetUserMacrosRegKeyBase()
}
//----------------------------------------------------------------------------
-void cmGlobalVisualStudioGenerator::FillLinkClosure(cmTarget const* target,
- TargetSet& linked)
+void cmGlobalVisualStudioGenerator::FillLinkClosure(
+ const cmGeneratorTarget *target,
+ TargetSet& linked)
{
if(linked.insert(target).second)
{
- cmGeneratorTarget* gt = this->GetGeneratorTarget(target);
- TargetDependSet const& depends = this->GetTargetDirectDepends(gt);
+ TargetDependSet const& depends =
+ this->GetTargetDirectDepends(target);
for(TargetDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
{
if(di->IsLink())
{
- this->FillLinkClosure((*di)->Target, linked);
+ this->FillLinkClosure(*di, linked);
}
}
}
@@ -322,7 +324,7 @@ void cmGlobalVisualStudioGenerator::FillLinkClosure(cmTarget const* target,
//----------------------------------------------------------------------------
cmGlobalVisualStudioGenerator::TargetSet const&
-cmGlobalVisualStudioGenerator::GetTargetLinkClosure(cmTarget* target)
+cmGlobalVisualStudioGenerator::GetTargetLinkClosure(cmGeneratorTarget* target)
{
TargetSetMap::iterator i = this->TargetLinkClosure.find(target);
if(i == this->TargetLinkClosure.end())
@@ -336,7 +338,8 @@ cmGlobalVisualStudioGenerator::GetTargetLinkClosure(cmTarget* target)
//----------------------------------------------------------------------------
void cmGlobalVisualStudioGenerator::FollowLinkDepends(
- cmTarget const* target, std::set<cmTarget const*>& linked)
+ const cmGeneratorTarget *target,
+ std::set<const cmGeneratorTarget *> &linked)
{
if(target->GetType() == cmState::INTERFACE_LIBRARY)
{
@@ -347,14 +350,13 @@ void cmGlobalVisualStudioGenerator::FollowLinkDepends(
{
// Static library targets do not list their link dependencies so
// we must follow them transitively now.
- cmGeneratorTarget* gt = this->GetGeneratorTarget(target);
- TargetDependSet const& depends = this->GetTargetDirectDepends(gt);
+ TargetDependSet const& depends = this->GetTargetDirectDepends(target);
for(TargetDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
{
if(di->IsLink())
{
- this->FollowLinkDepends((*di)->Target, linked);
+ this->FollowLinkDepends(*di, linked);
}
}
}
@@ -374,11 +376,11 @@ bool cmGlobalVisualStudioGenerator::ComputeTargetDepends()
for(std::vector<cmLocalGenerator*>::iterator i = gen.begin();
i != gen.end(); ++i)
{
- cmTargets& targets = (*i)->GetMakefile()->GetTargets();
- for(cmTargets::iterator ti = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = (*i)->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ++ti)
{
- this->ComputeVSTargetDepends(ti->second);
+ this->ComputeVSTargetDepends(*ti);
}
}
}
@@ -392,13 +394,14 @@ static bool VSLinkable(cmGeneratorTarget const* t)
}
//----------------------------------------------------------------------------
-void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
+void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(
+ cmGeneratorTarget* target)
{
- if(this->VSTargetDepends.find(&target) != this->VSTargetDepends.end())
+ if(this->VSTargetDepends.find(target) != this->VSTargetDepends.end())
{
return;
}
- VSDependSet& vsTargetDepend = this->VSTargetDepends[&target];
+ VSDependSet& vsTargetDepend = this->VSTargetDepends[target];
// VS <= 7.1 has two behaviors that affect solution dependencies.
//
// (1) Solution-level dependencies between a linkable target and a
@@ -418,19 +421,18 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
// leaving them out for the static library itself but following them
// transitively for other targets.
- bool allowLinkable = (target.GetType() != cmState::STATIC_LIBRARY &&
- target.GetType() != cmState::SHARED_LIBRARY &&
- target.GetType() != cmState::MODULE_LIBRARY &&
- target.GetType() != cmState::EXECUTABLE);
+ bool allowLinkable = (target->GetType() != cmState::STATIC_LIBRARY &&
+ target->GetType() != cmState::SHARED_LIBRARY &&
+ target->GetType() != cmState::MODULE_LIBRARY &&
+ target->GetType() != cmState::EXECUTABLE);
- cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
- TargetDependSet const& depends = this->GetTargetDirectDepends(gt);
+ TargetDependSet const& depends = this->GetTargetDirectDepends(target);
// Collect implicit link dependencies (target_link_libraries).
// Static libraries cannot depend on their link implementation
// due to behavior (2), but they do not really need to.
- std::set<cmTarget const*> linkDepends;
- if(target.GetType() != cmState::STATIC_LIBRARY)
+ std::set<cmGeneratorTarget const*> linkDepends;
+ if(target->GetType() != cmState::STATIC_LIBRARY)
{
for(TargetDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
@@ -438,55 +440,54 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
cmTargetDepend dep = *di;
if(dep.IsLink())
{
- this->FollowLinkDepends(dep->Target, linkDepends);
+ this->FollowLinkDepends(*di, linkDepends);
}
}
}
// Collect explicit util dependencies (add_dependencies).
- std::set<cmTarget const*> utilDepends;
+ std::set<cmGeneratorTarget const*> utilDepends;
for(TargetDependSet::const_iterator di = depends.begin();
di != depends.end(); ++di)
{
cmTargetDepend dep = *di;
if(dep.IsUtil())
{
- this->FollowLinkDepends(dep->Target, utilDepends);
+ this->FollowLinkDepends(*di, utilDepends);
}
}
// Collect all targets linked by this target so we can avoid
// intermediate targets below.
TargetSet linked;
- if(target.GetType() != cmState::STATIC_LIBRARY)
+ if(target->GetType() != cmState::STATIC_LIBRARY)
{
- linked = this->GetTargetLinkClosure(&target);
+ linked = this->GetTargetLinkClosure(target);
}
// Emit link dependencies.
- for(std::set<cmTarget const*>::iterator di = linkDepends.begin();
+ for(std::set<cmGeneratorTarget const*>::iterator di = linkDepends.begin();
di != linkDepends.end(); ++di)
{
- cmTarget const* dep = *di;
+ cmGeneratorTarget const* dep = *di;
vsTargetDepend.insert(dep->GetName());
}
// Emit util dependencies. Possibly use intermediate targets.
- for(std::set<cmTarget const*>::iterator di = utilDepends.begin();
+ for(std::set<cmGeneratorTarget const*>::iterator di = utilDepends.begin();
di != utilDepends.end(); ++di)
{
- cmTarget const* dep = *di;
- cmGeneratorTarget* dgt = this->GetGeneratorTarget(dep);
- if(allowLinkable || !VSLinkable(dgt) || linked.count(dep))
+ cmGeneratorTarget const* dgt = *di;
+ if(allowLinkable || !VSLinkable(dgt) || linked.count(dgt))
{
// Direct dependency allowed.
- vsTargetDepend.insert(dep->GetName());
+ vsTargetDepend.insert(dgt->GetName());
}
else
{
// Direct dependency on linkable target not allowed.
// Use an intermediate utility target.
- vsTargetDepend.insert(this->GetUtilityDepend(dep));
+ vsTargetDepend.insert(this->GetUtilityDepend(dgt));
}
}
}
@@ -506,7 +507,8 @@ void cmGlobalVisualStudioGenerator::FindMakeProgram(cmMakefile* mf)
//----------------------------------------------------------------------------
std::string
-cmGlobalVisualStudioGenerator::GetUtilityDepend(cmTarget const* target)
+cmGlobalVisualStudioGenerator::GetUtilityDepend(
+ cmGeneratorTarget const* target)
{
UtilityDependsMap::iterator i = this->UtilityDepends.find(target);
if(i == this->UtilityDepends.end())
@@ -829,10 +831,8 @@ void RegisterVisualStudioMacros(const std::string& macrosFile,
}
}
bool
-cmGlobalVisualStudioGenerator::TargetIsFortranOnly(cmTarget const& target)
+cmGlobalVisualStudioGenerator::TargetIsFortranOnly(cmGeneratorTarget const* gt)
{
- cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
-
// check to see if this is a fortran build
std::set<std::string> languages;
{
@@ -891,9 +891,7 @@ cmGlobalVisualStudioGenerator::OrderedTargetDependSet
for (TargetSet::const_iterator it = targets.begin();
it != targets.end(); ++it)
{
- cmGeneratorTarget* gt =
- (*it)->GetMakefile()->GetGlobalGenerator()->GetGeneratorTarget(*it);
- this->insert(gt);
+ this->insert(*it);
}
}
diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h
index 41d0b88..f827f26 100644
--- a/Source/cmGlobalVisualStudioGenerator.h
+++ b/Source/cmGlobalVisualStudioGenerator.h
@@ -73,7 +73,7 @@ public:
const char* vsSolutionFile = 0);
// return true if target is fortran only
- bool TargetIsFortranOnly(cmTarget const& t);
+ bool TargetIsFortranOnly(const cmGeneratorTarget *gt);
/** Get the top-level registry key for this VS version. */
std::string GetRegistryBase();
@@ -88,7 +88,7 @@ public:
/** Return true if building for Windows CE */
virtual bool TargetsWindowsCE() const { return false; }
- class TargetSet: public std::set<cmTarget const*> {};
+ class TargetSet: public std::set<cmGeneratorTarget const*> {};
class TargetCompare
{
std::string First;
@@ -122,15 +122,16 @@ protected:
virtual bool ComputeTargetDepends();
class VSDependSet: public std::set<std::string> {};
- class VSDependMap: public std::map<cmTarget const*, VSDependSet> {};
+ class VSDependMap: public std::map<cmGeneratorTarget const*, VSDependSet> {};
VSDependMap VSTargetDepends;
- void ComputeVSTargetDepends(cmTarget&);
-
- bool CheckTargetLinks(cmTarget& target, const std::string& name);
- std::string GetUtilityForTarget(cmTarget& target, const std::string&);
- virtual std::string WriteUtilityDepend(cmTarget const*) = 0;
- std::string GetUtilityDepend(cmTarget const* target);
- typedef std::map<cmTarget const*, std::string> UtilityDependsMap;
+ void ComputeVSTargetDepends(cmGeneratorTarget *);
+
+ bool CheckTargetLinks(cmGeneratorTarget& target, const std::string& name);
+ std::string GetUtilityForTarget(cmGeneratorTarget& target,
+ const std::string&);
+ virtual std::string WriteUtilityDepend(cmGeneratorTarget const*) = 0;
+ std::string GetUtilityDepend(const cmGeneratorTarget *target);
+ typedef std::map<cmGeneratorTarget const*, std::string> UtilityDependsMap;
UtilityDependsMap UtilityDepends;
protected:
@@ -141,13 +142,14 @@ private:
void PrintCompilerAdvice(std::ostream&, std::string const&,
const char*) const {}
- void FollowLinkDepends(cmTarget const* target,
- std::set<cmTarget const*>& linked);
+ void FollowLinkDepends(cmGeneratorTarget const* target,
+ std::set<cmGeneratorTarget const*>& linked);
- class TargetSetMap: public std::map<cmTarget*, TargetSet> {};
+ class TargetSetMap: public std::map<cmGeneratorTarget*, TargetSet> {};
TargetSetMap TargetLinkClosure;
- void FillLinkClosure(cmTarget const* target, TargetSet& linked);
- TargetSet const& GetTargetLinkClosure(cmTarget* target);
+ void FillLinkClosure(const cmGeneratorTarget *target,
+ TargetSet& linked);
+ TargetSet const& GetTargetLinkClosure(cmGeneratorTarget* target);
};
class cmGlobalVisualStudioGenerator::OrderedTargetDependSet:
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 576827c..eecc82b 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -459,7 +459,7 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root,
"echo", "Build all projects");
cmGeneratorTarget* allBuildGt = new cmGeneratorTarget(allbuild, root);
- root->AddGeneratorTarget(allbuild, allBuildGt);
+ root->AddGeneratorTarget(allBuildGt);
root->GetGlobalGenerator()->AddGeneratorTarget(allbuild, allBuildGt);
// Refer to the main build configuration file for easy editing.
@@ -495,7 +495,7 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root,
"make", "-f", file.c_str());
cmGeneratorTarget* checkGt = new cmGeneratorTarget(check, root);
- root->AddGeneratorTarget(check, checkGt);
+ root->AddGeneratorTarget(checkGt);
root->GetGlobalGenerator()->AddGeneratorTarget(check, checkGt);
}
@@ -510,19 +510,22 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root,
continue;
}
- cmTargets& tgts = lg->GetMakefile()->GetTargets();
- for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
+ std::vector<cmGeneratorTarget*> tgts = lg->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); l++)
{
- cmTarget& target = l->second;
+ cmGeneratorTarget* target = *l;
- if (target.GetType() == cmState::GLOBAL_TARGET)
+ if (target->GetType() == cmState::GLOBAL_TARGET)
{
continue;
}
- if (regenerate && (l->first != CMAKE_CHECK_BUILD_SYSTEM_TARGET))
+ std::string targetName = target->GetName();
+
+ if (regenerate && (targetName != CMAKE_CHECK_BUILD_SYSTEM_TARGET))
{
- target.AddUtility(CMAKE_CHECK_BUILD_SYSTEM_TARGET);
+ target->Target->AddUtility(CMAKE_CHECK_BUILD_SYSTEM_TARGET);
}
// make all exe, shared libs and modules
@@ -530,19 +533,19 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root,
// this will make sure that when the next target is built
// things are up-to-date
if(!makeHelper.empty() &&
- (target.GetType() == cmState::EXECUTABLE ||
+ (target->GetType() == cmState::EXECUTABLE ||
// Nope - no post-build for OBJECT_LIRBRARY
-// target.GetType() == cmState::OBJECT_LIBRARY ||
- target.GetType() == cmState::STATIC_LIBRARY ||
- target.GetType() == cmState::SHARED_LIBRARY ||
- target.GetType() == cmState::MODULE_LIBRARY))
+// target->GetType() == cmState::OBJECT_LIBRARY ||
+ target->GetType() == cmState::STATIC_LIBRARY ||
+ target->GetType() == cmState::SHARED_LIBRARY ||
+ target->GetType() == cmState::MODULE_LIBRARY))
{
makeHelper[makeHelper.size()-1] = // fill placeholder
- this->PostBuildMakeTarget(target.GetName(), "$(CONFIGURATION)");
+ this->PostBuildMakeTarget(target->GetName(), "$(CONFIGURATION)");
cmCustomCommandLines commandLines;
commandLines.push_back(makeHelper);
std::vector<std::string> no_byproducts;
- lg->GetMakefile()->AddCustomCommandToTarget(target.GetName(),
+ lg->GetMakefile()->AddCustomCommandToTarget(target->GetName(),
no_byproducts,
no_depends,
commandLines,
@@ -551,19 +554,17 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root,
dir.c_str());
}
- if(target.GetType() != cmState::INTERFACE_LIBRARY
- && !target.GetPropertyAsBool("EXCLUDE_FROM_ALL"))
+ if(target->GetType() != cmState::INTERFACE_LIBRARY
+ && !target->GetPropertyAsBool("EXCLUDE_FROM_ALL"))
{
- allbuild->AddUtility(target.GetName());
+ allbuild->AddUtility(target->GetName());
}
- cmGeneratorTarget* targetGT = this->GetGeneratorTarget(&target);
-
// Refer to the build configuration file for easy editing.
listfile = lg->GetCurrentSourceDirectory();
listfile += "/";
listfile += "CMakeLists.txt";
- targetGT->AddSource(listfile.c_str());
+ target->AddSource(listfile.c_str());
}
}
}
@@ -710,9 +711,9 @@ cmXCodeObject* cmGlobalXCodeGenerator
//----------------------------------------------------------------------------
std::string
-GetGroupMapKeyFromPath(cmTarget& cmtarget, const std::string& fullpath)
+GetGroupMapKeyFromPath(cmGeneratorTarget* target, const std::string& fullpath)
{
- std::string key(cmtarget.GetName());
+ std::string key(target->GetName());
key += "-";
key += fullpath;
return key;
@@ -720,16 +721,16 @@ GetGroupMapKeyFromPath(cmTarget& cmtarget, const std::string& fullpath)
//----------------------------------------------------------------------------
std::string
-GetGroupMapKey(cmTarget& cmtarget, cmSourceFile* sf)
+GetGroupMapKey(cmGeneratorTarget* target, cmSourceFile* sf)
{
- return GetGroupMapKeyFromPath(cmtarget, sf->GetFullPath());
+ return GetGroupMapKeyFromPath(target, sf->GetFullPath());
}
//----------------------------------------------------------------------------
cmXCodeObject*
cmGlobalXCodeGenerator::CreateXCodeSourceFileFromPath(
const std::string &fullpath,
- cmTarget& cmtarget,
+ cmGeneratorTarget* target,
const std::string &lang,
cmSourceFile* sf)
{
@@ -737,7 +738,7 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFileFromPath(
// fileRef object for any given full path.
//
cmXCodeObject* fileRef =
- this->CreateXCodeFileReferenceFromPath(fullpath, cmtarget, lang, sf);
+ this->CreateXCodeFileReferenceFromPath(fullpath, target, lang, sf);
cmXCodeObject* buildFile = this->CreateObject(cmXCodeObject::PBXBuildFile);
buildFile->SetComment(fileRef->GetComment());
@@ -750,7 +751,7 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFileFromPath(
cmXCodeObject*
cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
cmSourceFile* sf,
- cmTarget& cmtarget)
+ cmGeneratorTarget* gtgt)
{
// Add flags from target and source file properties.
std::string flags;
@@ -780,7 +781,7 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
this->CurrentLocalGenerator->GetSourceFileLanguage(*sf);
cmXCodeObject* buildFile =
- this->CreateXCodeSourceFileFromPath(sf->GetFullPath(), cmtarget, lang, sf);
+ this->CreateXCodeSourceFileFromPath(sf->GetFullPath(), gtgt, lang, sf);
cmXCodeObject* fileRef = buildFile->GetObject("fileRef")->GetObject();
cmXCodeObject* settings =
@@ -790,7 +791,6 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
// Is this a resource file in this target? Add it to the resources group...
//
- cmGeneratorTarget* gtgt = this->GetGeneratorTarget(&cmtarget);
cmGeneratorTarget::SourceFileFlags tsFlags =
gtgt->GetTargetSourceFileFlags(sf);
bool isResource = tsFlags.Type == cmGeneratorTarget::SourceFileTypeResource;
@@ -925,11 +925,11 @@ GetSourcecodeValueFromFileExtension(const std::string& _ext,
cmXCodeObject*
cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath(
const std::string &fullpath,
- cmTarget& cmtarget,
+ cmGeneratorTarget* target,
const std::string &lang,
cmSourceFile* sf)
{
- std::string key = GetGroupMapKeyFromPath(cmtarget, fullpath);
+ std::string key = GetGroupMapKeyFromPath(target, fullpath);
cmXCodeObject* fileRef = this->FileRefs[key];
if(!fileRef)
{
@@ -1006,13 +1006,13 @@ cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath(
//----------------------------------------------------------------------------
cmXCodeObject*
cmGlobalXCodeGenerator::CreateXCodeFileReference(cmSourceFile* sf,
- cmTarget& cmtarget)
+ cmGeneratorTarget* target)
{
std::string lang =
this->CurrentLocalGenerator->GetSourceFileLanguage(*sf);
return this->CreateXCodeFileReferenceFromPath(
- sf->GetFullPath(), cmtarget, lang, sf);
+ sf->GetFullPath(), target, lang, sf);
}
//----------------------------------------------------------------------------
@@ -1085,34 +1085,38 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
targets)
{
this->SetCurrentLocalGenerator(gen);
- cmTargets &tgts = this->CurrentMakefile->GetTargets();
- typedef std::map<std::string, cmTarget*, cmCompareTargets> cmSortedTargets;
+ std::vector<cmGeneratorTarget*> tgts =
+ this->CurrentLocalGenerator->GetGeneratorTargets();
+ typedef std::map<std::string, cmGeneratorTarget*, cmCompareTargets>
+ cmSortedTargets;
cmSortedTargets sortedTargets;
- for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); l++)
{
- sortedTargets[l->first] = &l->second;
+ sortedTargets[(*l)->GetName()] = *l;
}
for(cmSortedTargets::iterator l = sortedTargets.begin();
l != sortedTargets.end(); l++)
{
- cmTarget& cmtarget = *l->second;
- cmGeneratorTarget* gtgt = this->GetGeneratorTarget(&cmtarget);
+ cmGeneratorTarget* gtgt = l->second;
+
+ std::string targetName = gtgt->GetName();
// make sure ALL_BUILD, INSTALL, etc are only done once
- if(this->SpecialTargetEmitted(l->first.c_str()))
+ if(this->SpecialTargetEmitted(targetName.c_str()))
{
continue;
}
- if(cmtarget.GetType() == cmState::INTERFACE_LIBRARY)
+ if(gtgt->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
- if(cmtarget.GetType() == cmState::UTILITY ||
- cmtarget.GetType() == cmState::GLOBAL_TARGET)
+ if(gtgt->GetType() == cmState::UTILITY ||
+ gtgt->GetType() == cmState::GLOBAL_TARGET)
{
- cmXCodeObject* t = this->CreateUtilityTarget(cmtarget);
+ cmXCodeObject* t = this->CreateUtilityTarget(gtgt);
if (!t)
{
return false;
@@ -1140,7 +1144,7 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
{
cmXCodeObject* xsf =
this->CreateXCodeSourceFile(this->CurrentLocalGenerator,
- *i, cmtarget);
+ *i, gtgt);
cmXCodeObject* fr = xsf->GetObject("fileRef");
cmXCodeObject* filetype =
fr->GetObject()->GetObject("explicitFileType");
@@ -1191,14 +1195,14 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
{
std::string obj = *oi;
cmXCodeObject* xsf =
- this->CreateXCodeSourceFileFromPath(obj, cmtarget, "", 0);
+ this->CreateXCodeSourceFileFromPath(obj, gtgt, "", 0);
externalObjFiles.push_back(xsf);
}
}
// some build phases only apply to bundles and/or frameworks
bool isFrameworkTarget = gtgt->IsFrameworkOnApple();
- bool isBundleTarget = cmtarget.GetPropertyAsBool("MACOSX_BUNDLE");
+ bool isBundleTarget = gtgt->GetPropertyAsBool("MACOSX_BUNDLE");
bool isCFBundleTarget = gtgt->IsCFBundleOnApple();
cmXCodeObject* buildFiles = 0;
@@ -1314,7 +1318,7 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
{
cmXCodeObject* xsf =
this->CreateXCodeSourceFile(this->CurrentLocalGenerator,
- *sfIt, cmtarget);
+ *sfIt, gtgt);
buildFiles->AddObject(xsf);
}
contentBuildPhases.push_back(copyFilesBuildPhase);
@@ -1348,9 +1352,9 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
this->CreateCustomCommands(buildPhases, sourceBuildPhase,
headerBuildPhase, resourceBuildPhase,
contentBuildPhases,
- frameworkBuildPhase, cmtarget);
+ frameworkBuildPhase, gtgt);
- targets.push_back(this->CreateXCodeTarget(cmtarget, buildPhases));
+ targets.push_back(this->CreateXCodeTarget(gtgt, buildPhases));
}
return true;
}
@@ -1362,22 +1366,22 @@ void cmGlobalXCodeGenerator::ForceLinkerLanguages()
for(TargetMap::const_iterator
ti = this->TotalTargets.begin(); ti != this->TotalTargets.end(); ++ti)
{
- this->ForceLinkerLanguage(*ti->second);
+ cmGeneratorTarget* gt = this->GetGeneratorTarget(ti->second);
+ this->ForceLinkerLanguage(gt);
}
}
//----------------------------------------------------------------------------
-void cmGlobalXCodeGenerator::ForceLinkerLanguage(cmTarget& cmtarget)
+void cmGlobalXCodeGenerator::ForceLinkerLanguage(cmGeneratorTarget* gtgt)
{
// This matters only for targets that link.
- if(cmtarget.GetType() != cmState::EXECUTABLE &&
- cmtarget.GetType() != cmState::SHARED_LIBRARY &&
- cmtarget.GetType() != cmState::MODULE_LIBRARY)
+ if(gtgt->GetType() != cmState::EXECUTABLE &&
+ gtgt->GetType() != cmState::SHARED_LIBRARY &&
+ gtgt->GetType() != cmState::MODULE_LIBRARY)
{
return;
}
- cmGeneratorTarget *gtgt = this->GetGeneratorTarget(&cmtarget);
std::string llang = gtgt->GetLinkerLanguage("NOCONFIG");
if(llang.empty()) { return; }
@@ -1393,11 +1397,11 @@ void cmGlobalXCodeGenerator::ForceLinkerLanguage(cmTarget& cmtarget)
// Add an empty source file to the target that compiles with the
// linker language. This should convince Xcode to choose the proper
// language.
- cmMakefile* mf = cmtarget.GetMakefile();
+ cmMakefile* mf = gtgt->Target->GetMakefile();
std::string fname = gtgt->GetLocalGenerator()->GetCurrentBinaryDirectory();
fname += cmake::GetCMakeFilesDirectory();
fname += "/";
- fname += cmtarget.GetName();
+ fname += gtgt->GetName();
fname += "-CMakeForceLinker";
fname += ".";
fname += cmSystemTools::LowerCase(llang);
@@ -1425,7 +1429,7 @@ bool cmGlobalXCodeGenerator::IsHeaderFile(cmSourceFile* sf)
cmXCodeObject*
cmGlobalXCodeGenerator::CreateBuildPhase(const char* name,
const char* name2,
- cmTarget& cmtarget,
+ cmGeneratorTarget* target,
const std::vector<cmCustomCommand>&
commands)
{
@@ -1445,7 +1449,7 @@ cmGlobalXCodeGenerator::CreateBuildPhase(const char* name,
this->CreateString("0"));
buildPhase->AddAttribute("shellPath",
this->CreateString("/bin/sh"));
- this->AddCommandsToBuildPhase(buildPhase, cmtarget, commands,
+ this->AddCommandsToBuildPhase(buildPhase, target, commands,
name2);
return buildPhase;
}
@@ -1462,18 +1466,16 @@ void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases,
contentBuildPhases,
cmXCodeObject*
frameworkBuildPhase,
- cmTarget& cmtarget)
+ cmGeneratorTarget* gtgt)
{
std::vector<cmCustomCommand> const & prebuild
- = cmtarget.GetPreBuildCommands();
+ = gtgt->Target->GetPreBuildCommands();
std::vector<cmCustomCommand> const & prelink
- = cmtarget.GetPreLinkCommands();
+ = gtgt->Target->GetPreLinkCommands();
std::vector<cmCustomCommand> postbuild
- = cmtarget.GetPostBuildCommands();
+ = gtgt->Target->GetPostBuildCommands();
- cmGeneratorTarget* gtgt = this->GetGeneratorTarget(&cmtarget);
-
- if(cmtarget.GetType() == cmState::SHARED_LIBRARY &&
+ if(gtgt->GetType() == cmState::SHARED_LIBRARY &&
!gtgt->IsFrameworkOnApple())
{
cmCustomCommandLines cmd;
@@ -1482,13 +1484,13 @@ void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases,
cmd[0].push_back("-E");
cmd[0].push_back("cmake_symlink_library");
std::string str_file = "$<TARGET_FILE:";
- str_file += cmtarget.GetName();
+ str_file += gtgt->GetName();
str_file += ">";
std::string str_so_file = "$<TARGET_SONAME_FILE:";
- str_so_file += cmtarget.GetName();
+ str_so_file += gtgt->GetName();
str_so_file += ">";
std::string str_link_file = "$<TARGET_LINKER_FILE:";
- str_link_file += cmtarget.GetName();
+ str_link_file += gtgt->GetName();
str_link_file += ">";
cmd[0].push_back(str_file);
cmd[0].push_back(str_so_file);
@@ -1524,19 +1526,19 @@ void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases,
cmXCodeObject* cmakeRulesBuildPhase =
this->CreateBuildPhase("CMake Rules",
"cmakeRulesBuildPhase",
- cmtarget, commands);
+ gtgt, commands);
// create prebuild phase
cmXCodeObject* preBuildPhase =
this->CreateBuildPhase("CMake PreBuild Rules", "preBuildCommands",
- cmtarget, prebuild);
+ gtgt, prebuild);
// create prelink phase
cmXCodeObject* preLinkPhase =
this->CreateBuildPhase("CMake PreLink Rules", "preLinkCommands",
- cmtarget, prelink);
+ gtgt, prelink);
// create postbuild phase
cmXCodeObject* postBuildPhase =
this->CreateBuildPhase("CMake PostBuild Rules", "postBuildPhase",
- cmtarget, postbuild);
+ gtgt, postbuild);
// The order here is the order they will be built in.
// The order "headers, resources, sources" mimics a native project generated
@@ -1652,7 +1654,7 @@ std::string cmGlobalXCodeGenerator::ExtractFlagRegex(const char* exp,
//----------------------------------------------------------------------------
void
cmGlobalXCodeGenerator::AddCommandsToBuildPhase(cmXCodeObject* buildphase,
- cmTarget& target,
+ cmGeneratorTarget* target,
std::vector<cmCustomCommand>
const & commands,
const char* name)
@@ -1662,7 +1664,7 @@ cmGlobalXCodeGenerator::AddCommandsToBuildPhase(cmXCodeObject* buildphase,
cmSystemTools::MakeDirectory(dir.c_str());
std::string makefile = dir;
makefile += "/";
- makefile += target.GetName();
+ makefile += target->GetName();
makefile += "_";
makefile += name;
makefile += ".make";
@@ -1696,7 +1698,7 @@ cmGlobalXCodeGenerator::AddCommandsToBuildPhase(cmXCodeObject* buildphase,
//----------------------------------------------------------------------------
void cmGlobalXCodeGenerator
::CreateCustomRulesMakefile(const char* makefileBasename,
- cmTarget& target,
+ cmGeneratorTarget* target,
std::vector<cmCustomCommand>
const & commands,
const std::string& configName)
@@ -1713,7 +1715,7 @@ void cmGlobalXCodeGenerator
}
makefileStream.SetCopyIfDifferent(true);
makefileStream << "# Generated by CMake, DO NOT EDIT\n";
- makefileStream << "# Custom rules for " << target.GetName() << "\n";
+ makefileStream << "# Custom rules for " << target->GetName() << "\n";
// disable the implicit rules
makefileStream << ".SUFFIXES: " << "\n";
@@ -1742,7 +1744,7 @@ void cmGlobalXCodeGenerator
{
std::ostringstream str;
str << "_buildpart_" << count++ ;
- tname[&ccg.GetCC()] = std::string(target.GetName()) + str.str();
+ tname[&ccg.GetCC()] = std::string(target->GetName()) + str.str();
makefileStream << "\\\n\t" << tname[&ccg.GetCC()];
}
}
@@ -1820,26 +1822,25 @@ void cmGlobalXCodeGenerator
}
//----------------------------------------------------------------------------
-void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
+void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
cmXCodeObject* buildSettings,
const std::string& configName)
{
- if(target.GetType() == cmState::INTERFACE_LIBRARY)
+ if(gtgt->GetType() == cmState::INTERFACE_LIBRARY)
{
return;
}
std::string defFlags;
- bool shared = ((target.GetType() == cmState::SHARED_LIBRARY) ||
- (target.GetType() == cmState::MODULE_LIBRARY));
- bool binary = ((target.GetType() == cmState::OBJECT_LIBRARY) ||
- (target.GetType() == cmState::STATIC_LIBRARY) ||
- (target.GetType() == cmState::EXECUTABLE) ||
+ bool shared = ((gtgt->GetType() == cmState::SHARED_LIBRARY) ||
+ (gtgt->GetType() == cmState::MODULE_LIBRARY));
+ bool binary = ((gtgt->GetType() == cmState::OBJECT_LIBRARY) ||
+ (gtgt->GetType() == cmState::STATIC_LIBRARY) ||
+ (gtgt->GetType() == cmState::EXECUTABLE) ||
shared);
// Compute the compilation flags for each language.
std::set<std::string> languages;
- cmGeneratorTarget *gtgt = this->GetGeneratorTarget(&target);
gtgt->GetLanguages(languages, configName);
std::map<std::string, std::string> cflags;
for (std::set<std::string>::iterator li = languages.begin();
@@ -1867,7 +1868,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
{
cmSystemTools::Error
("CMake can not determine linker language for target: ",
- target.GetName().c_str());
+ gtgt->GetName().c_str());
return;
}
@@ -1896,15 +1897,15 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
std::string extraLinkOptionsVar;
std::string extraLinkOptions;
- if(target.GetType() == cmState::EXECUTABLE)
+ if(gtgt->GetType() == cmState::EXECUTABLE)
{
extraLinkOptionsVar = "CMAKE_EXE_LINKER_FLAGS";
}
- else if(target.GetType() == cmState::SHARED_LIBRARY)
+ else if(gtgt->GetType() == cmState::SHARED_LIBRARY)
{
extraLinkOptionsVar = "CMAKE_SHARED_LINKER_FLAGS";
}
- else if(target.GetType() == cmState::MODULE_LIBRARY)
+ else if(gtgt->GetType() == cmState::MODULE_LIBRARY)
{
extraLinkOptionsVar = "CMAKE_MODULE_LINKER_FLAGS";
}
@@ -1916,8 +1917,8 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
configName);
}
- if(target.GetType() == cmState::OBJECT_LIBRARY ||
- target.GetType() == cmState::STATIC_LIBRARY)
+ if(gtgt->GetType() == cmState::OBJECT_LIBRARY ||
+ gtgt->GetType() == cmState::STATIC_LIBRARY)
{
this->CurrentLocalGenerator
->GetStaticLibraryFlags(extraLinkOptions,
@@ -1926,7 +1927,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
}
else
{
- const char* targetLinkFlags = target.GetProperty("LINK_FLAGS");
+ const char* targetLinkFlags = gtgt->GetProperty("LINK_FLAGS");
if(targetLinkFlags)
{
this->CurrentLocalGenerator->
@@ -1936,7 +1937,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
{
std::string linkFlagsVar = "LINK_FLAGS_";
linkFlagsVar += cmSystemTools::UpperCase(configName);
- if(const char* linkFlags = target.GetProperty(linkFlagsVar.c_str()))
+ if(const char* linkFlags = gtgt->GetProperty(linkFlagsVar.c_str()))
{
this->CurrentLocalGenerator->
AppendFlags(extraLinkOptions, linkFlags);
@@ -1979,8 +1980,8 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
std::string pnsuffix;
gtgt->GetFullNameComponents(pnprefix, pnbase, pnsuffix, configName);
- const char* version = target.GetProperty("VERSION");
- const char* soversion = target.GetProperty("SOVERSION");
+ const char* version = gtgt->GetProperty("VERSION");
+ const char* soversion = gtgt->GetProperty("SOVERSION");
if(!gtgt->HasSOName(configName) || gtgt->IsFrameworkOnApple())
{
version = 0;
@@ -2007,10 +2008,10 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
// Set attributes to specify the proper name for the target.
std::string pndir = this->CurrentLocalGenerator->GetCurrentBinaryDirectory();
- if(target.GetType() == cmState::STATIC_LIBRARY ||
- target.GetType() == cmState::SHARED_LIBRARY ||
- target.GetType() == cmState::MODULE_LIBRARY ||
- target.GetType() == cmState::EXECUTABLE)
+ if(gtgt->GetType() == cmState::STATIC_LIBRARY ||
+ gtgt->GetType() == cmState::SHARED_LIBRARY ||
+ gtgt->GetType() == cmState::MODULE_LIBRARY ||
+ gtgt->GetType() == cmState::EXECUTABLE)
{
if(this->XcodeVersion >= 21)
{
@@ -2038,16 +2039,16 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
buildSettings->AddAttribute("EXECUTABLE_SUFFIX",
this->CreateString(pnsuffix.c_str()));
}
- else if(target.GetType() == cmState::OBJECT_LIBRARY)
+ else if(gtgt->GetType() == cmState::OBJECT_LIBRARY)
{
pnprefix = "lib";
- pnbase = target.GetName();
+ pnbase = gtgt->GetName();
pnsuffix = ".a";
if(this->XcodeVersion >= 21)
{
std::string pncdir = this->GetObjectsNormalDirectory(
- this->CurrentProject, configName, &target);
+ this->CurrentProject, configName, gtgt);
buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR",
this->CreateString(pncdir.c_str()));
}
@@ -2056,7 +2057,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
buildSettings->AddAttribute("OBJROOT",
this->CreateString(pndir.c_str()));
pndir = this->GetObjectsNormalDirectory(
- this->CurrentProject, configName, &target);
+ this->CurrentProject, configName, gtgt);
}
}
@@ -2067,7 +2068,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
this->CreateString(pndir.c_str()));
// Handle settings for each target type.
- switch(target.GetType())
+ switch(gtgt->GetType())
{
case cmState::OBJECT_LIBRARY:
case cmState::STATIC_LIBRARY:
@@ -2094,7 +2095,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
extraLinkOptions += " ";
extraLinkOptions += createFlags;
}
- std::string plist = this->ComputeInfoPListLocation(target);
+ std::string plist = this->ComputeInfoPListLocation(gtgt);
// Xcode will create the final version of Info.plist at build time,
// so let it replace the cfbundle name. This avoids creating
// a per-configuration Info.plist file. The cfbundle plist
@@ -2138,13 +2139,13 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
}
case cmState::SHARED_LIBRARY:
{
- if(target.GetPropertyAsBool("FRAMEWORK"))
+ if(gtgt->GetPropertyAsBool("FRAMEWORK"))
{
- std::string fw_version = target.GetFrameworkVersion();
+ std::string fw_version = gtgt->Target->GetFrameworkVersion();
buildSettings->AddAttribute("FRAMEWORK_VERSION",
this->CreateString(fw_version.c_str()));
- std::string plist = this->ComputeInfoPListLocation(target);
+ std::string plist = this->ComputeInfoPListLocation(gtgt);
// Xcode will create the final version of Info.plist at build time,
// so let it replace the framework name. This avoids creating
// a per-configuration Info.plist file.
@@ -2185,9 +2186,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
}
// Handle bundles and normal executables separately.
- if(target.GetPropertyAsBool("MACOSX_BUNDLE"))
+ if(gtgt->GetPropertyAsBool("MACOSX_BUNDLE"))
{
- std::string plist = this->ComputeInfoPListLocation(target);
+ std::string plist = this->ComputeInfoPListLocation(gtgt);
// Xcode will create the final version of Info.plist at build time,
// so let it replace the executable name. This avoids creating
// a per-configuration Info.plist file.
@@ -2349,7 +2350,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
// Add Fortran source format attribute if property is set.
const char* format = 0;
- const char* tgtfmt = target.GetProperty("Fortran_FORMAT");
+ const char* tgtfmt = gtgt->GetProperty("Fortran_FORMAT");
switch(this->CurrentLocalGenerator->GetFortranFormat(tgtfmt))
{
case cmLocalGenerator::FortranFormatFixed: format = "fixed"; break;
@@ -2364,7 +2365,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
// Create the INSTALL_PATH attribute.
std::string install_name_dir;
- if(target.GetType() == cmState::SHARED_LIBRARY)
+ if(gtgt->GetType() == cmState::SHARED_LIBRARY)
{
// Get the install_name directory for the build tree.
install_name_dir = gtgt->GetInstallNameDirForBuildTree(configName);
@@ -2426,7 +2427,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
}
}
- buildSettings->AddAttribute(this->GetTargetLinkFlagsVar(target),
+ buildSettings->AddAttribute(this->GetTargetLinkFlagsVar(gtgt),
this->CreateString(extraLinkOptions.c_str()));
buildSettings->AddAttribute("OTHER_REZFLAGS",
this->CreateString(""));
@@ -2452,7 +2453,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
}
// Runtime version information.
- if(target.GetType() == cmState::SHARED_LIBRARY)
+ if(gtgt->GetType() == cmState::SHARED_LIBRARY)
{
int major;
int minor;
@@ -2485,7 +2486,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
// put this last so it can override existing settings
// Convert "XCODE_ATTRIBUTE_*" properties directly.
{
- cmPropertyMap const& props = target.GetProperties();
+ cmPropertyMap const& props = gtgt->Target->GetProperties();
for(cmPropertyMap::const_iterator i = props.begin();
i != props.end(); ++i)
{
@@ -2534,7 +2535,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
//----------------------------------------------------------------------------
cmXCodeObject*
-cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
+cmGlobalXCodeGenerator::CreateUtilityTarget(cmGeneratorTarget* gtgt)
{
cmXCodeObject* shellBuildPhase =
this->CreateObject(cmXCodeObject::PBXShellScriptBuildPhase);
@@ -2558,16 +2559,16 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
cmXCodeObject* target =
this->CreateObject(cmXCodeObject::PBXAggregateTarget);
- target->SetComment(cmtarget.GetName().c_str());
+ target->SetComment(gtgt->GetName().c_str());
cmXCodeObject* buildPhases =
this->CreateObject(cmXCodeObject::OBJECT_LIST);
std::vector<cmXCodeObject*> emptyContentVector;
this->CreateCustomCommands(buildPhases, 0, 0, 0, emptyContentVector, 0,
- cmtarget);
+ gtgt);
target->AddAttribute("buildPhases", buildPhases);
if(this->XcodeVersion > 20)
{
- this->AddConfigurations(target, cmtarget);
+ this->AddConfigurations(target, gtgt);
}
else
{
@@ -2575,22 +2576,21 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
this->CurrentMakefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
cmXCodeObject* buildSettings =
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- this->CreateBuildSettings(cmtarget, buildSettings, theConfig);
+ this->CreateBuildSettings(gtgt, buildSettings, theConfig);
target->AddAttribute("buildSettings", buildSettings);
}
cmXCodeObject* dependencies =
this->CreateObject(cmXCodeObject::OBJECT_LIST);
target->AddAttribute("dependencies", dependencies);
- target->AddAttribute("name", this->CreateString(cmtarget.GetName()));
- target->AddAttribute("productName",this->CreateString(cmtarget.GetName()));
- target->SetTarget(&cmtarget);
- this->XCodeObjectMap[&cmtarget] = target;
+ target->AddAttribute("name", this->CreateString(gtgt->GetName()));
+ target->AddAttribute("productName",this->CreateString(gtgt->GetName()));
+ target->SetTarget(gtgt);
+ this->XCodeObjectMap[gtgt] = target;
// Add source files without build rules for editing convenience.
- if(cmtarget.GetType() == cmState::UTILITY)
+ if(gtgt->GetType() == cmState::UTILITY)
{
std::vector<cmSourceFile*> sources;
- cmGeneratorTarget* gtgt = this->GetGeneratorTarget(&cmtarget);
if (!gtgt->GetConfigCommonSourceFiles(sources))
{
return 0;
@@ -2601,20 +2601,20 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
{
if(!(*i)->GetPropertyAsBool("GENERATED"))
{
- this->CreateXCodeFileReference(*i, cmtarget);
+ this->CreateXCodeFileReference(*i, gtgt);
}
}
}
target->SetId(this->GetOrCreateId(
- cmtarget.GetName(), target->GetId()).c_str());
+ gtgt->GetName(), target->GetId()).c_str());
return target;
}
//----------------------------------------------------------------------------
std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
- cmTarget& cmtarget)
+ cmGeneratorTarget* gtgt)
{
std::string configTypes =
this->CurrentMakefile->GetRequiredDefinition("CMAKE_CONFIGURATION_TYPES");
@@ -2630,7 +2630,7 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
std::string comment = "Build configuration list for ";
comment += cmXCodeObject::PBXTypeNames[target->GetIsA()];
comment += " \"";
- comment += cmtarget.GetName();
+ comment += gtgt->GetName();
comment += "\"";
configlist->SetComment(comment.c_str());
target->AddAttribute("buildConfigurationList",
@@ -2642,7 +2642,7 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
buildConfigurations->AddObject(config);
cmXCodeObject* buildSettings =
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- this->CreateBuildSettings(cmtarget, buildSettings,
+ this->CreateBuildSettings(gtgt, buildSettings,
configVector[i].c_str());
config->AddAttribute("name", this->CreateString(configVector[i].c_str()));
config->SetComment(configVector[i].c_str());
@@ -2660,12 +2660,12 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
}
//----------------------------------------------------------------------------
-const char*
-cmGlobalXCodeGenerator::GetTargetLinkFlagsVar(cmTarget const& cmtarget) const
+const char* cmGlobalXCodeGenerator::GetTargetLinkFlagsVar(
+ cmGeneratorTarget const* target) const
{
if(this->XcodeVersion >= 60 &&
- (cmtarget.GetType() == cmState::STATIC_LIBRARY ||
- cmtarget.GetType() == cmState::OBJECT_LIBRARY))
+ (target->GetType() == cmState::STATIC_LIBRARY ||
+ target->GetType() == cmState::OBJECT_LIBRARY))
{
return "OTHER_LIBTOOLFLAGS";
}
@@ -2735,10 +2735,10 @@ const char* cmGlobalXCodeGenerator::GetTargetProductType(
//----------------------------------------------------------------------------
cmXCodeObject*
-cmGlobalXCodeGenerator::CreateXCodeTarget(cmTarget& cmtarget,
+cmGlobalXCodeGenerator::CreateXCodeTarget(cmGeneratorTarget* gtgt,
cmXCodeObject* buildPhases)
{
- if(cmtarget.GetType() == cmState::INTERFACE_LIBRARY)
+ if(gtgt->GetType() == cmState::INTERFACE_LIBRARY)
{
return 0;
}
@@ -2750,23 +2750,21 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmTarget& cmtarget,
std::string defConfig;
if(this->XcodeVersion > 20)
{
- defConfig = this->AddConfigurations(target, cmtarget);
+ defConfig = this->AddConfigurations(target, gtgt);
}
else
{
cmXCodeObject* buildSettings =
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
defConfig = this->CurrentMakefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
- this->CreateBuildSettings(cmtarget, buildSettings, defConfig.c_str());
+ this->CreateBuildSettings(gtgt, buildSettings, defConfig.c_str());
target->AddAttribute("buildSettings", buildSettings);
}
cmXCodeObject* dependencies =
this->CreateObject(cmXCodeObject::OBJECT_LIST);
target->AddAttribute("dependencies", dependencies);
- target->AddAttribute("name", this->CreateString(cmtarget.GetName()));
- target->AddAttribute("productName",this->CreateString(cmtarget.GetName()));
-
- cmGeneratorTarget *gtgt = this->GetGeneratorTarget(&cmtarget);
+ target->AddAttribute("name", this->CreateString(gtgt->GetName()));
+ target->AddAttribute("productName",this->CreateString(gtgt->GetName()));
cmXCodeObject* fileRef =
this->CreateObject(cmXCodeObject::PBXFileReference);
@@ -2775,10 +2773,10 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmTarget& cmtarget,
fileRef->AddAttribute("explicitFileType", this->CreateString(fileType));
}
std::string fullName;
- if(cmtarget.GetType() == cmState::OBJECT_LIBRARY)
+ if(gtgt->GetType() == cmState::OBJECT_LIBRARY)
{
fullName = "lib";
- fullName += cmtarget.GetName();
+ fullName += gtgt->GetName();
fullName += ".a";
}
else
@@ -2789,29 +2787,30 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmTarget& cmtarget,
fileRef->AddAttribute("refType", this->CreateString("0"));
fileRef->AddAttribute("sourceTree",
this->CreateString("BUILT_PRODUCTS_DIR"));
- fileRef->SetComment(cmtarget.GetName().c_str());
+ fileRef->SetComment(gtgt->GetName().c_str());
target->AddAttribute("productReference",
this->CreateObjectReference(fileRef));
if(const char* productType = this->GetTargetProductType(gtgt))
{
target->AddAttribute("productType", this->CreateString(productType));
}
- target->SetTarget(&cmtarget);
- this->XCodeObjectMap[&cmtarget] = target;
+ target->SetTarget(gtgt);
+ this->XCodeObjectMap[gtgt] = target;
target->SetId(this->GetOrCreateId(
- cmtarget.GetName(), target->GetId()).c_str());
+ gtgt->GetName(), target->GetId()).c_str());
return target;
}
//----------------------------------------------------------------------------
-cmXCodeObject* cmGlobalXCodeGenerator::FindXCodeTarget(cmTarget const* t)
+cmXCodeObject*
+cmGlobalXCodeGenerator::FindXCodeTarget(cmGeneratorTarget const* t)
{
if(!t)
{
return 0;
}
- std::map<cmTarget const*, cmXCodeObject*>::const_iterator const i =
+ std::map<cmGeneratorTarget const*, cmXCodeObject*>::const_iterator const i =
this->XCodeObjectMap.find(t);
if (i == this->XCodeObjectMap.end())
{
@@ -2948,23 +2947,22 @@ void cmGlobalXCodeGenerator
void cmGlobalXCodeGenerator
::AddDependAndLinkInformation(cmXCodeObject* target)
{
- cmTarget* cmtarget = target->GetTarget();
- if(cmtarget->GetType() == cmState::INTERFACE_LIBRARY)
+ cmGeneratorTarget* gt = target->GetTarget();
+ if(!gt)
{
+ cmSystemTools::Error("Error no target on xobject\n");
return;
}
- if(!cmtarget)
+ if(gt->GetType() == cmState::INTERFACE_LIBRARY)
{
- cmSystemTools::Error("Error no target on xobject\n");
return;
}
// Add dependencies on other CMake targets.
- cmGeneratorTarget* gt = this->GetGeneratorTarget(cmtarget);
TargetDependSet const& deps = this->GetTargetDirectDepends(gt);
for(TargetDependSet::const_iterator i = deps.begin(); i != deps.end(); ++i)
{
- if(cmXCodeObject* dptarget = this->FindXCodeTarget((*i)->Target))
+ if(cmXCodeObject* dptarget = this->FindXCodeTarget(*i))
{
this->AddDependTarget(target, dptarget);
}
@@ -2984,7 +2982,7 @@ void cmGlobalXCodeGenerator
std::string linkObjs;
const char* sep = "";
std::vector<std::string> objs;
- this->GetGeneratorTarget(cmtarget)->UseObjectLibraries(objs, "");
+ gt->UseObjectLibraries(objs, "");
for(std::vector<std::string>::const_iterator
oi = objs.begin(); oi != objs.end(); ++oi)
{
@@ -2993,20 +2991,19 @@ void cmGlobalXCodeGenerator
linkObjs += this->XCodeEscapePath(oi->c_str());
}
this->AppendBuildSettingAttribute(
- target, this->GetTargetLinkFlagsVar(*cmtarget),
+ target, this->GetTargetLinkFlagsVar(gt),
linkObjs.c_str(), configName);
}
// Skip link information for object libraries.
- if(cmtarget->GetType() == cmState::OBJECT_LIBRARY ||
- cmtarget->GetType() == cmState::STATIC_LIBRARY)
+ if(gt->GetType() == cmState::OBJECT_LIBRARY ||
+ gt->GetType() == cmState::STATIC_LIBRARY)
{
continue;
}
// Compute the link library and directory information.
- cmGeneratorTarget* gtgt = this->GetGeneratorTarget(cmtarget);
- cmComputeLinkInformation* pcli = gtgt->GetLinkInformation(configName);
+ cmComputeLinkInformation* pcli = gt->GetLinkInformation(configName);
if(!pcli)
{
continue;
@@ -3074,7 +3071,7 @@ void cmGlobalXCodeGenerator
}
}
this->AppendBuildSettingAttribute(
- target, this->GetTargetLinkFlagsVar(*cmtarget),
+ target, this->GetTargetLinkFlagsVar(gt),
linkLibs.c_str(), configName);
}
}
@@ -3094,31 +3091,30 @@ bool cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
}
cmMakefile* mf = (*i)->GetMakefile();
std::vector<cmSourceGroup> sourceGroups = mf->GetSourceGroups();
- cmTargets &tgts = mf->GetTargets();
- for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
+ std::vector<cmGeneratorTarget*> tgts = (*i)->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); l++)
{
- cmTarget& cmtarget = l->second;
+ cmGeneratorTarget* gtgt = *l;
// Same skipping logic here as in CreateXCodeTargets so that we do not
// end up with (empty anyhow) ALL_BUILD and XCODE_DEPEND_HELPER source
// groups:
//
- if(cmtarget.GetType() == cmState::GLOBAL_TARGET)
+ if(gtgt->GetType() == cmState::GLOBAL_TARGET)
{
continue;
}
- if(cmtarget.GetType() == cmState::INTERFACE_LIBRARY)
+ if(gtgt->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
- cmGeneratorTarget* gtgt = this->GetGeneratorTarget(&cmtarget);
-
// add the soon to be generated Info.plist file as a source for a
// MACOSX_BUNDLE file
- if(cmtarget.GetPropertyAsBool("MACOSX_BUNDLE"))
+ if(gtgt->GetPropertyAsBool("MACOSX_BUNDLE"))
{
- std::string plist = this->ComputeInfoPListLocation(cmtarget);
+ std::string plist = this->ComputeInfoPListLocation(gtgt);
mf->GetOrCreateSource(plist, true);
gtgt->AddSource(plist);
}
@@ -3138,14 +3134,14 @@ bool cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
cmSourceGroup* sourceGroup =
mf->FindSourceGroup(source.c_str(), sourceGroups);
cmXCodeObject* pbxgroup =
- this->CreateOrGetPBXGroup(cmtarget, sourceGroup);
- std::string key = GetGroupMapKey(cmtarget, sf);
+ this->CreateOrGetPBXGroup(gtgt, sourceGroup);
+ std::string key = GetGroupMapKey(gtgt, sf);
this->GroupMap[key] = pbxgroup;
}
// Put OBJECT_LIBRARY objects in proper groups:
std::vector<std::string> objs;
- this->GetGeneratorTarget(&cmtarget)->UseObjectLibraries(objs, "");
+ gtgt->UseObjectLibraries(objs, "");
for(std::vector<std::string>::const_iterator
oi = objs.begin(); oi != objs.end(); ++oi)
{
@@ -3153,8 +3149,8 @@ bool cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
cmSourceGroup* sourceGroup =
mf->FindSourceGroup(source.c_str(), sourceGroups);
cmXCodeObject* pbxgroup =
- this->CreateOrGetPBXGroup(cmtarget, sourceGroup);
- std::string key = GetGroupMapKeyFromPath(cmtarget, source);
+ this->CreateOrGetPBXGroup(gtgt, sourceGroup);
+ std::string key = GetGroupMapKeyFromPath(gtgt, source);
this->GroupMap[key] = pbxgroup;
}
}
@@ -3185,16 +3181,16 @@ cmXCodeObject *cmGlobalXCodeGenerator
//----------------------------------------------------------------------------
cmXCodeObject* cmGlobalXCodeGenerator
-::CreateOrGetPBXGroup(cmTarget& cmtarget, cmSourceGroup* sg)
+::CreateOrGetPBXGroup(cmGeneratorTarget* gtgt, cmSourceGroup* sg)
{
std::string s;
std::string target;
- const char *targetFolder= cmtarget.GetProperty("FOLDER");
+ const char *targetFolder= gtgt->GetProperty("FOLDER");
if(targetFolder) {
target = targetFolder;
target += "/";
}
- target += cmtarget.GetName();
+ target += gtgt->GetName();
s = target + "/";
s += sg->GetFullName();
std::map<std::string, cmXCodeObject* >::iterator it =
@@ -3584,10 +3580,10 @@ std::string
cmGlobalXCodeGenerator::GetObjectsNormalDirectory(
const std::string &projName,
const std::string &configName,
- const cmTarget *t) const
+ const cmGeneratorTarget *t) const
{
std::string dir =
- t->GetMakefile()->GetCurrentBinaryDirectory();
+ t->GetLocalGenerator()->GetCurrentBinaryDirectory();
dir += "/";
dir += projName;
dir += ".build/";
@@ -3661,24 +3657,23 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
i != targets.end(); ++i)
{
cmXCodeObject* target = *i;
- cmTarget* t =target->GetTarget();
- cmGeneratorTarget *gt = this->GetGeneratorTarget(t);
+ cmGeneratorTarget* gt =target->GetTarget();
- if(t->GetType() == cmState::EXECUTABLE ||
+ if(gt->GetType() == cmState::EXECUTABLE ||
// Nope - no post-build for OBJECT_LIRBRARY
-// t->GetType() == cmState::OBJECT_LIBRARY ||
- t->GetType() == cmState::STATIC_LIBRARY ||
- t->GetType() == cmState::SHARED_LIBRARY ||
- t->GetType() == cmState::MODULE_LIBRARY)
+// gt->GetType() == cmState::OBJECT_LIBRARY ||
+ gt->GetType() == cmState::STATIC_LIBRARY ||
+ gt->GetType() == cmState::SHARED_LIBRARY ||
+ gt->GetType() == cmState::MODULE_LIBRARY)
{
// Declare an entry point for the target post-build phase.
- makefileStream << this->PostBuildMakeTarget(t->GetName(), *ct)
+ makefileStream << this->PostBuildMakeTarget(gt->GetName(), *ct)
<< ":\n";
}
- if(t->GetType() == cmState::EXECUTABLE ||
- t->GetType() == cmState::SHARED_LIBRARY ||
- t->GetType() == cmState::MODULE_LIBRARY)
+ if(gt->GetType() == cmState::EXECUTABLE ||
+ gt->GetType() == cmState::SHARED_LIBRARY ||
+ gt->GetType() == cmState::MODULE_LIBRARY)
{
std::string tfull = gt->GetFullPath(configName);
std::string trel = this->ConvertToRelativeForMake(tfull.c_str());
@@ -3723,7 +3718,7 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
if(this->Architectures.size() > 1)
{
std::string universal = this->GetObjectsNormalDirectory(
- this->CurrentProject, configName, t);
+ this->CurrentProject, configName, gt);
for( std::vector<std::string>::iterator arch =
this->Architectures.begin();
arch != this->Architectures.end(); ++arch)
@@ -4066,12 +4061,13 @@ void cmGlobalXCodeGenerator::AppendFlag(std::string& flags,
//----------------------------------------------------------------------------
std::string
-cmGlobalXCodeGenerator::ComputeInfoPListLocation(cmTarget& target)
+cmGlobalXCodeGenerator::ComputeInfoPListLocation(cmGeneratorTarget* target)
{
- std::string plist = target.GetMakefile()->GetCurrentBinaryDirectory();
+ std::string plist =
+ target->GetLocalGenerator()->GetCurrentBinaryDirectory();
plist += cmake::GetCMakeFilesDirectory();
plist += "/";
- plist += target.GetName();
+ plist += target->GetName();
plist += ".dir/Info.plist";
return plist;
}
@@ -4097,7 +4093,7 @@ void cmGlobalXCodeGenerator
{
std::string configName = this->GetCMakeCFGIntDir();
std::string dir = this->GetObjectsNormalDirectory(
- "$(PROJECT_NAME)", configName, gt->Target);
+ "$(PROJECT_NAME)", configName, gt);
if(this->XcodeVersion >= 21)
{
dir += "$(CURRENT_ARCH)/";
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index 2becb0d..c8a39df 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -16,7 +16,6 @@
#include "cmXCodeObject.h"
#include "cmCustomCommand.h"
class cmGlobalGeneratorFactory;
-class cmTarget;
class cmSourceFile;
class cmSourceGroup;
@@ -90,7 +89,7 @@ protected:
virtual void AddExtraIDETargets();
virtual void Generate();
private:
- cmXCodeObject* CreateOrGetPBXGroup(cmTarget& cmtarget,
+ cmXCodeObject* CreateOrGetPBXGroup(cmGeneratorTarget* gtgt,
cmSourceGroup* sg);
cmXCodeObject* CreatePBXGroup(cmXCodeObject *parent,
std::string name);
@@ -108,22 +107,22 @@ private:
cmXCodeObject* resourceBuildPhase,
std::vector<cmXCodeObject*> contentBuildPhases,
cmXCodeObject* frameworkBuildPhase,
- cmTarget& cmtarget);
+ cmGeneratorTarget *gtgt);
- std::string ComputeInfoPListLocation(cmTarget& target);
+ std::string ComputeInfoPListLocation(cmGeneratorTarget *target);
void AddCommandsToBuildPhase(cmXCodeObject* buildphase,
- cmTarget& target,
+ cmGeneratorTarget *target,
std::vector<cmCustomCommand>
const & commands,
const char* commandFileName);
void CreateCustomRulesMakefile(const char* makefileBasename,
- cmTarget& target,
+ cmGeneratorTarget* target,
std::vector<cmCustomCommand> const & commands,
const std::string& configName);
- cmXCodeObject* FindXCodeTarget(cmTarget const*);
+ cmXCodeObject* FindXCodeTarget(const cmGeneratorTarget *);
std::string GetOrCreateId(const std::string& name, const std::string& id);
// create cmXCodeObject from these functions so that memory can be managed
@@ -132,22 +131,23 @@ private:
cmXCodeObject* CreateObject(cmXCodeObject::Type type);
cmXCodeObject* CreateString(const std::string& s);
cmXCodeObject* CreateObjectReference(cmXCodeObject*);
- cmXCodeObject* CreateXCodeTarget(cmTarget& target,
+ cmXCodeObject* CreateXCodeTarget(cmGeneratorTarget *gtgt,
cmXCodeObject* buildPhases);
void ForceLinkerLanguages();
- void ForceLinkerLanguage(cmTarget& cmtarget);
- const char* GetTargetLinkFlagsVar(cmTarget const& cmtarget) const;
+ void ForceLinkerLanguage(cmGeneratorTarget* gtgt);
+ const char* GetTargetLinkFlagsVar(const cmGeneratorTarget *target) const;
const char* GetTargetFileType(cmGeneratorTarget* target);
const char* GetTargetProductType(cmGeneratorTarget* target);
- std::string AddConfigurations(cmXCodeObject* target, cmTarget& cmtarget);
+ std::string AddConfigurations(cmXCodeObject* target,
+ cmGeneratorTarget *gtgt);
void AppendOrAddBuildSetting(cmXCodeObject* settings, const char* attr,
const char* value);
void AppendBuildSettingAttribute(cmXCodeObject* target, const char* attr,
const char* value,
const std::string& configName);
- cmXCodeObject* CreateUtilityTarget(cmTarget& target);
+ cmXCodeObject* CreateUtilityTarget(cmGeneratorTarget *gtgt);
void AddDependAndLinkInformation(cmXCodeObject* target);
- void CreateBuildSettings(cmTarget& target,
+ void CreateBuildSettings(cmGeneratorTarget *gtgt,
cmXCodeObject* buildSettings,
const std::string& buildType);
std::string ExtractFlag(const char* flag, std::string& flags);
@@ -163,18 +163,18 @@ private:
void WriteXCodePBXProj(std::ostream& fout, cmLocalGenerator* root,
std::vector<cmLocalGenerator*>& generators);
cmXCodeObject* CreateXCodeFileReferenceFromPath(const std::string &fullpath,
- cmTarget& cmtarget,
+ cmGeneratorTarget *target,
const std::string &lang,
cmSourceFile* sf);
cmXCodeObject* CreateXCodeSourceFileFromPath(const std::string &fullpath,
- cmTarget& cmtarget,
+ cmGeneratorTarget *target,
const std::string &lang,
cmSourceFile* sf);
cmXCodeObject* CreateXCodeFileReference(cmSourceFile* sf,
- cmTarget& cmtarget);
+ cmGeneratorTarget *target);
cmXCodeObject* CreateXCodeSourceFile(cmLocalGenerator* gen,
cmSourceFile* sf,
- cmTarget& cmtarget);
+ cmGeneratorTarget *gtgt);
bool CreateXCodeTargets(cmLocalGenerator* gen,
std::vector<cmXCodeObject*>&);
bool IsHeaderFile(cmSourceFile*);
@@ -187,7 +187,7 @@ private:
std::vector<cmLocalGenerator*>& gens);
cmXCodeObject* CreateBuildPhase(const char* name,
const char* name2,
- cmTarget& cmtarget,
+ cmGeneratorTarget *target,
const std::vector<cmCustomCommand>&);
void CreateReRunCMakeFile(cmLocalGenerator* root,
std::vector<cmLocalGenerator*> const& gens);
@@ -226,10 +226,9 @@ private:
void PrintCompilerAdvice(std::ostream&, std::string const&,
const char*) const {}
- std::string GetObjectsNormalDirectory(
- const std::string &projName,
+ std::string GetObjectsNormalDirectory(const std::string &projName,
const std::string &configName,
- const cmTarget *t) const;
+ const cmGeneratorTarget *t) const;
void addObject(cmXCodeObject *obj);
std::string PostBuildMakeTarget(std::string const& tName,
@@ -251,7 +250,7 @@ private:
std::map<std::string, cmXCodeObject* > GroupNameMap;
std::map<std::string, cmXCodeObject* > TargetGroup;
std::map<std::string, cmXCodeObject* > FileRefs;
- std::map<cmTarget const*, cmXCodeObject* > XCodeObjectMap;
+ std::map<cmGeneratorTarget const*, cmXCodeObject* > XCodeObjectMap;
std::vector<std::string> Architectures;
std::string GeneratorToolset;
};
diff --git a/Source/cmGraphVizWriter.cxx b/Source/cmGraphVizWriter.cxx
index cc36c62..a63b6e3 100644
--- a/Source/cmGraphVizWriter.cxx
+++ b/Source/cmGraphVizWriter.cxx
@@ -17,7 +17,7 @@
-static const char* getShapeForTarget(const cmTarget* target)
+static const char* getShapeForTarget(const cmGeneratorTarget* target)
{
if (!target)
{
@@ -163,7 +163,7 @@ void cmGraphVizWriter::WriteTargetDependersFiles(const char* fileName)
this->CollectTargetsAndLibs();
- for(std::map<std::string, const cmTarget*>::const_iterator ptrIt =
+ for(std::map<std::string, const cmGeneratorTarget*>::const_iterator ptrIt =
this->TargetPtrs.begin();
ptrIt != this->TargetPtrs.end();
++ptrIt)
@@ -214,7 +214,7 @@ void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
this->CollectTargetsAndLibs();
- for(std::map<std::string, const cmTarget*>::const_iterator ptrIt =
+ for(std::map<std::string, const cmGeneratorTarget*>::const_iterator ptrIt =
this->TargetPtrs.begin();
ptrIt != this->TargetPtrs.end();
++ptrIt)
@@ -268,7 +268,7 @@ void cmGraphVizWriter::WriteGlobalFile(const char* fileName)
std::set<std::string> insertedConnections;
std::set<std::string> insertedNodes;
- for(std::map<std::string, const cmTarget*>::const_iterator ptrIt =
+ for(std::map<std::string, const cmGeneratorTarget*>::const_iterator ptrIt =
this->TargetPtrs.begin();
ptrIt != this->TargetPtrs.end();
++ptrIt)
@@ -308,8 +308,8 @@ void cmGraphVizWriter::WriteConnections(const std::string& targetName,
std::set<std::string>& insertedConnections,
cmGeneratedFileStream& str) const
{
- std::map<std::string, const cmTarget* >::const_iterator targetPtrIt =
- this->TargetPtrs.find(targetName);
+ std::map<std::string, const cmGeneratorTarget* >::const_iterator targetPtrIt
+ = this->TargetPtrs.find(targetName);
if (targetPtrIt == this->TargetPtrs.end()) // not found at all
{
@@ -327,7 +327,7 @@ void cmGraphVizWriter::WriteConnections(const std::string& targetName,
std::string myNodeName = this->TargetNamesNodes.find(targetName)->second;
const cmTarget::LinkLibraryVectorType* ll =
- &(targetPtrIt->second->GetOriginalLinkLibraries());
+ &(targetPtrIt->second->Target->GetOriginalLinkLibraries());
for (cmTarget::LinkLibraryVectorType::const_iterator llit = ll->begin();
llit != ll->end();
@@ -367,8 +367,8 @@ void cmGraphVizWriter::WriteDependerConnections(const std::string& targetName,
std::set<std::string>& insertedConnections,
cmGeneratedFileStream& str) const
{
- std::map<std::string, const cmTarget* >::const_iterator targetPtrIt =
- this->TargetPtrs.find(targetName);
+ std::map<std::string, const cmGeneratorTarget* >::const_iterator targetPtrIt
+ = this->TargetPtrs.find(targetName);
if (targetPtrIt == this->TargetPtrs.end()) // not found at all
{
@@ -386,8 +386,8 @@ void cmGraphVizWriter::WriteDependerConnections(const std::string& targetName,
std::string myNodeName = this->TargetNamesNodes.find(targetName)->second;
// now search who links against me
- for(std::map<std::string, const cmTarget*>::const_iterator dependerIt =
- this->TargetPtrs.begin();
+ for(std::map<std::string, const cmGeneratorTarget*>::const_iterator
+ dependerIt = this->TargetPtrs.begin();
dependerIt != this->TargetPtrs.end();
++dependerIt)
{
@@ -404,7 +404,7 @@ void cmGraphVizWriter::WriteDependerConnections(const std::string& targetName,
// Now we have a target, check whether it links against targetName.
// If so, draw a connection, and then continue with dependers on that one.
const cmTarget::LinkLibraryVectorType* ll =
- &(dependerIt->second->GetOriginalLinkLibraries());
+ &(dependerIt->second->Target->GetOriginalLinkLibraries());
for (cmTarget::LinkLibraryVectorType::const_iterator llit = ll->begin();
llit != ll->end();
@@ -448,7 +448,7 @@ void cmGraphVizWriter::WriteDependerConnections(const std::string& targetName,
void cmGraphVizWriter::WriteNode(const std::string& targetName,
- const cmTarget* target,
+ const cmGeneratorTarget* target,
std::set<std::string>& insertedNodes,
cmGeneratedFileStream& str) const
{
@@ -488,12 +488,11 @@ int cmGraphVizWriter::CollectAllTargets()
lit != this->LocalGenerators.end();
++ lit )
{
- const cmTargets* targets = &((*lit)->GetMakefile()->GetTargets());
- for ( cmTargets::const_iterator tit = targets->begin();
- tit != targets->end();
- ++ tit )
+ std::vector<cmGeneratorTarget*> targets = (*lit)->GetGeneratorTargets();
+ for ( std::vector<cmGeneratorTarget*>::const_iterator it =
+ targets.begin(); it != targets.end(); ++it )
{
- const char* realTargetName = tit->first.c_str();
+ const char* realTargetName = (*it)->GetName().c_str();
if(this->IgnoreThisTarget(realTargetName))
{
// Skip ignored targets
@@ -503,7 +502,7 @@ int cmGraphVizWriter::CollectAllTargets()
std::ostringstream ostr;
ostr << this->GraphNodePrefix << cnt++;
this->TargetNamesNodes[realTargetName] = ostr.str();
- this->TargetPtrs[realTargetName] = &tit->second;
+ this->TargetPtrs[realTargetName] = *it;
}
}
@@ -519,19 +518,18 @@ int cmGraphVizWriter::CollectAllExternalLibs(int cnt)
lit != this->LocalGenerators.end();
++ lit )
{
- const cmTargets* targets = &((*lit)->GetMakefile()->GetTargets());
- for ( cmTargets::const_iterator tit = targets->begin();
- tit != targets->end();
- ++ tit )
+ std::vector<cmGeneratorTarget*> targets = (*lit)->GetGeneratorTargets();
+ for ( std::vector<cmGeneratorTarget*>::const_iterator it =
+ targets.begin(); it != targets.end(); ++it )
{
- const char* realTargetName = tit->first.c_str();
+ const char* realTargetName = (*it)->GetName().c_str();
if (this->IgnoreThisTarget(realTargetName))
{
// Skip ignored targets
continue;
}
const cmTarget::LinkLibraryVectorType* ll =
- &(tit->second.GetOriginalLinkLibraries());
+ &((*it)->Target->GetOriginalLinkLibraries());
for (cmTarget::LinkLibraryVectorType::const_iterator llit = ll->begin();
llit != ll->end();
++ llit )
@@ -543,8 +541,8 @@ int cmGraphVizWriter::CollectAllExternalLibs(int cnt)
continue;
}
- std::map<std::string, const cmTarget*>::const_iterator tarIt =
- this->TargetPtrs.find(libName);
+ std::map<std::string, const cmGeneratorTarget*>::const_iterator tarIt
+ = this->TargetPtrs.find(libName);
if ( tarIt == this->TargetPtrs.end() )
{
std::ostringstream ostr;
diff --git a/Source/cmGraphVizWriter.h b/Source/cmGraphVizWriter.h
index 0a20e6e..90d31d3 100644
--- a/Source/cmGraphVizWriter.h
+++ b/Source/cmGraphVizWriter.h
@@ -14,9 +14,9 @@
#include "cmStandardIncludes.h"
#include "cmLocalGenerator.h"
#include "cmGeneratedFileStream.h"
-#include "cmTarget.h"
#include <cmsys/RegularExpression.hxx>
+class cmGeneratorTarget;
/** This class implements writing files for graphviz (dot) for graphs
* representing the dependencies between the targets in the project. */
@@ -54,7 +54,8 @@ protected:
std::set<std::string>& insertedConnections,
cmGeneratedFileStream& str) const;
- void WriteNode(const std::string& targetName, const cmTarget* target,
+ void WriteNode(const std::string& targetName,
+ const cmGeneratorTarget* target,
std::set<std::string>& insertedNodes,
cmGeneratedFileStream& str) const;
@@ -73,7 +74,7 @@ protected:
const std::vector<cmLocalGenerator*>& LocalGenerators;
- std::map<std::string, const cmTarget*> TargetPtrs;
+ std::map<std::string, const cmGeneratorTarget*> TargetPtrs;
// maps from the actual target names to node names in dot:
std::map<std::string, std::string> TargetNamesNodes;
diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx
index a97cc5f..59d06f6 100644
--- a/Source/cmInstallTargetGenerator.cxx
+++ b/Source/cmInstallTargetGenerator.cxx
@@ -76,7 +76,7 @@ void cmInstallTargetGenerator::GenerateScriptForConfig(std::ostream& os,
if(this->Target->NeedRelinkBeforeInstall(config))
{
fromDirConfig =
- this->Target->Target->GetMakefile()->GetCurrentBinaryDirectory();
+ this->Target->GetLocalGenerator()->GetCurrentBinaryDirectory();
fromDirConfig += cmake::GetCMakeFilesDirectory();
fromDirConfig += "/CMakeRelink.dir/";
}
@@ -111,7 +111,7 @@ void cmInstallTargetGenerator::GenerateScriptForConfig(std::ostream& os,
case cmState::UTILITY:
case cmState::GLOBAL_TARGET:
case cmState::UNKNOWN_LIBRARY:
- this->Target->Target->GetMakefile()->IssueMessage(cmake::INTERNAL_ERROR,
+ this->Target->GetLocalGenerator()->IssueMessage(cmake::INTERNAL_ERROR,
"cmInstallTargetGenerator created with non-installable target.");
return;
}
@@ -440,8 +440,7 @@ cmInstallTargetGenerator::GetInstallFilename(cmGeneratorTarget const* target,
void cmInstallTargetGenerator::Compute(cmLocalGenerator* lg)
{
- this->Target = lg->GetGlobalGenerator()->GetGeneratorTarget(
- lg->GetMakefile()->FindTarget(this->TargetName));
+ this->Target = lg->FindGeneratorTarget(this->TargetName);
}
//----------------------------------------------------------------------------
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 8a76c21..c37417d 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -132,15 +132,15 @@ void cmLocalGenerator::TraceDependencies()
this->GlobalGenerator->CreateEvaluationSourceFiles(*ci);
}
// Generate the rule files for each target.
- cmGeneratorTargetsType targets = this->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- if (t->second->GetType() == cmState::INTERFACE_LIBRARY)
+ if ((*t)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
- t->second->TraceDependencies();
+ (*t)->TraceDependencies();
}
}
@@ -448,9 +448,16 @@ void cmLocalGenerator::GenerateInstallRules()
}
-void cmLocalGenerator::AddGeneratorTarget(cmTarget* t, cmGeneratorTarget* gt)
+void cmLocalGenerator::AddGeneratorTarget(cmGeneratorTarget* gt)
{
- this->GeneratorTargets[t] = gt;
+ this->GeneratorTargets.push_back(gt);
+}
+
+cmGeneratorTarget* cmLocalGenerator::FindGeneratorTarget(
+ const std::string& name) const
+{
+ return this->GetGlobalGenerator()->GetGeneratorTarget(
+ this->Makefile->FindTarget(name));
}
//----------------------------------------------------------------------------
@@ -465,12 +472,12 @@ void cmLocalGenerator::ComputeTargetManifest()
}
// Add our targets to the manifest for each configuration.
- cmGeneratorTargetsType targets = this->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- cmGeneratorTarget& target = *t->second;
- if (target.GetType() == cmState::INTERFACE_LIBRARY)
+ cmGeneratorTarget* target = *t;
+ if (target->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
@@ -478,7 +485,7 @@ void cmLocalGenerator::ComputeTargetManifest()
ci != configNames.end(); ++ci)
{
const char* config = ci->c_str();
- target.ComputeTargetManifest(config);
+ target->ComputeTargetManifest(config);
}
}
}
@@ -2133,7 +2140,7 @@ void cmLocalGenerator
"has the following visibility properties set for " << lang << ":\n" <<
warnCMP0063 <<
"For compatibility CMake is not honoring them for this target.";
- target->Target->GetMakefile()->GetCMakeInstance()
+ target->GetLocalGenerator()->GetCMakeInstance()
->IssueMessage(cmake::AUTHOR_WARNING, w.str(),
target->GetBacktrace());
}
@@ -2503,28 +2510,29 @@ cmLocalGenerator
{
// Convert the old-style install specification from each target to
// an install generator and run it.
- cmTargets& tgts = this->Makefile->GetTargets();
- for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); ++l)
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- if (l->second.GetType() == cmState::INTERFACE_LIBRARY)
+ if ((*l)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
// Include the user-specified pre-install script for this target.
- if(const char* preinstall = l->second.GetProperty("PRE_INSTALL_SCRIPT"))
+ if(const char* preinstall = (*l)->GetProperty("PRE_INSTALL_SCRIPT"))
{
cmInstallScriptGenerator g(preinstall, false, 0);
g.Generate(os, config, configurationTypes);
}
// Install this target if a destination is given.
- if(l->second.GetInstallPath() != "")
+ if((*l)->Target->GetInstallPath() != "")
{
// Compute the full install destination. Note that converting
// to unix slashes also removes any trailing slash.
// We also skip over the leading slash given by the user.
- std::string destination = l->second.GetInstallPath().substr(1);
+ std::string destination = (*l)->Target->GetInstallPath().substr(1);
cmSystemTools::ConvertToUnixSlashes(destination);
if(destination.empty())
{
@@ -2532,7 +2540,7 @@ cmLocalGenerator
}
// Generate the proper install generator for this target type.
- switch(l->second.GetType())
+ switch((*l)->GetType())
{
case cmState::EXECUTABLE:
case cmState::STATIC_LIBRARY:
@@ -2540,7 +2548,7 @@ cmLocalGenerator
{
// Use a target install generator.
cmInstallTargetGeneratorLocal
- g(this, l->first, destination.c_str(), false);
+ g(this, (*l)->GetName(), destination.c_str(), false);
g.Generate(os, config, configurationTypes);
}
break;
@@ -2551,18 +2559,18 @@ cmLocalGenerator
// to the normal destination and the DLL to the runtime
// destination.
cmInstallTargetGeneratorLocal
- g1(this, l->first, destination.c_str(), true);
+ g1(this, (*l)->GetName(), destination.c_str(), true);
g1.Generate(os, config, configurationTypes);
// We also skip over the leading slash given by the user.
- destination = l->second.GetRuntimeInstallPath().substr(1);
+ destination = (*l)->Target->GetRuntimeInstallPath().substr(1);
cmSystemTools::ConvertToUnixSlashes(destination);
cmInstallTargetGeneratorLocal
- g2(this, l->first, destination.c_str(), false);
+ g2(this, (*l)->GetName(), destination.c_str(), false);
g2.Generate(os, config, configurationTypes);
#else
// Use a target install generator.
cmInstallTargetGeneratorLocal
- g(this, l->first, destination.c_str(), false);
+ g(this, (*l)->GetName(), destination.c_str(), false);
g.Generate(os, config, configurationTypes);
#endif
}
@@ -2573,7 +2581,7 @@ cmLocalGenerator
}
// Include the user-specified post-install script for this target.
- if(const char* postinstall = l->second.GetProperty("POST_INSTALL_SCRIPT"))
+ if(const char* postinstall = (*l)->GetProperty("POST_INSTALL_SCRIPT"))
{
cmInstallScriptGenerator g(postinstall, false, 0);
g.Generate(os, config, configurationTypes);
diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h
index 307c67f..552020b 100644
--- a/Source/cmLocalGenerator.h
+++ b/Source/cmLocalGenerator.h
@@ -113,13 +113,14 @@ public:
bool forResponseFile = false,
const std::string& config = "");
- const cmGeneratorTargetsType &GetGeneratorTargets() const
+ const std::vector<cmGeneratorTarget*> &GetGeneratorTargets() const
{
return this->GeneratorTargets;
}
- void AddGeneratorTarget(cmTarget* t, cmGeneratorTarget* gt);
+ void AddGeneratorTarget(cmGeneratorTarget* gt);
+ cmGeneratorTarget* FindGeneratorTarget(const std::string& name) const;
cmGeneratorTarget* FindGeneratorTargetToUse(const std::string& name) const;
/**
@@ -367,7 +368,7 @@ protected:
std::set<std::string> ObjectMaxPathViolations;
std::set<cmGeneratorTarget const*> WarnCMP0063;
- cmGeneratorTargetsType GeneratorTargets;
+ std::vector<cmGeneratorTarget*> GeneratorTargets;
bool EmitUniversalBinaryFlags;
diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx
index 869ba2c..a77a75e 100644
--- a/Source/cmLocalGhsMultiGenerator.cxx
+++ b/Source/cmLocalGhsMultiGenerator.cxx
@@ -26,16 +26,16 @@ cmLocalGhsMultiGenerator::~cmLocalGhsMultiGenerator() {}
void cmLocalGhsMultiGenerator::Generate()
{
- cmGeneratorTargetsType tgts = this->GetGeneratorTargets();
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
- for (cmGeneratorTargetsType::iterator l = tgts.begin(); l != tgts.end();
- ++l)
+ for (std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- if (l->second->GetType() == cmState::INTERFACE_LIBRARY)
+ if ((*l)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
- cmGhsMultiTargetGenerator tg(l->second);
+ cmGhsMultiTargetGenerator tg(*l);
tg.Generate();
}
}
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index 756c139..891c44e 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -73,23 +73,23 @@ void cmLocalNinjaGenerator::Generate()
}
}
- cmGeneratorTargetsType targets = this->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- if (t->second->GetType() == cmState::INTERFACE_LIBRARY)
+ if ((*t)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
- cmNinjaTargetGenerator* tg = cmNinjaTargetGenerator::New(t->second);
+ cmNinjaTargetGenerator* tg = cmNinjaTargetGenerator::New(*t);
if(tg)
{
tg->Generate();
// Add the target to "all" if required.
if (!this->GetGlobalNinjaGenerator()->IsExcluded(
this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0],
- t->second))
- this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target);
+ *t))
+ this->GetGlobalNinjaGenerator()->AddDependencyToAll(*t);
delete tg;
}
}
@@ -285,14 +285,14 @@ void cmLocalNinjaGenerator::WriteProcessedMakefile(std::ostream& os)
void
cmLocalNinjaGenerator
-::AppendTargetOutputs(cmTarget* target, cmNinjaDeps& outputs)
+::AppendTargetOutputs(cmGeneratorTarget* target, cmNinjaDeps& outputs)
{
this->GetGlobalNinjaGenerator()->AppendTargetOutputs(target, outputs);
}
void
cmLocalNinjaGenerator
-::AppendTargetDepends(cmTarget* target, cmNinjaDeps& outputs)
+::AppendTargetDepends(cmGeneratorTarget* target, cmNinjaDeps& outputs)
{
this->GetGlobalNinjaGenerator()->AppendTargetDepends(target, outputs);
}
@@ -441,7 +441,7 @@ cmLocalNinjaGenerator::WriteCustomCommandBuildStatement(
}
void cmLocalNinjaGenerator::AddCustomCommandTarget(cmCustomCommand const* cc,
- cmTarget* target)
+ cmGeneratorTarget* target)
{
this->CustomCommandTargets[cc].insert(target);
}
@@ -459,7 +459,7 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatements()
//
// FIXME: This won't work in certain obscure scenarios involving indirect
// dependencies.
- std::set<cmTarget*>::iterator j = i->second.begin();
+ std::set<cmGeneratorTarget*>::iterator j = i->second.begin();
assert(j != i->second.end());
std::vector<std::string> ccTargetDeps;
this->AppendTargetDepends(*j, ccTargetDeps);
diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h
index ce5f82d..b6987ef 100644
--- a/Source/cmLocalNinjaGenerator.h
+++ b/Source/cmLocalNinjaGenerator.h
@@ -58,10 +58,11 @@ public:
std::string BuildCommandLine(const std::vector<std::string> &cmdLines);
- void AppendTargetOutputs(cmTarget* target, cmNinjaDeps& outputs);
- void AppendTargetDepends(cmTarget* target, cmNinjaDeps& outputs);
+ void AppendTargetOutputs(cmGeneratorTarget* target, cmNinjaDeps& outputs);
+ void AppendTargetDepends(cmGeneratorTarget* target, cmNinjaDeps& outputs);
- void AddCustomCommandTarget(cmCustomCommand const* cc, cmTarget* target);
+ void AddCustomCommandTarget(cmCustomCommand const* cc,
+ cmGeneratorTarget* target);
void AppendCustomCommandLines(cmCustomCommandGenerator const& ccg,
std::vector<std::string> &cmdLines);
void AppendCustomCommandDeps(cmCustomCommandGenerator const& ccg,
@@ -102,7 +103,7 @@ private:
std::string HomeRelativeOutputPath;
- typedef std::map<cmCustomCommand const*, std::set<cmTarget*> >
+ typedef std::map<cmCustomCommand const*, std::set<cmGeneratorTarget*> >
CustomCommandTargetMap;
CustomCommandTargetMap CustomCommandTargets;
};
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index 5485da4..34a50a3 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -113,18 +113,18 @@ void cmLocalUnixMakefileGenerator3::Generate()
this->Makefile->IsOn("CMAKE_SKIP_ASSEMBLY_SOURCE_RULES");
// Generate the rule files for each target.
- cmGeneratorTargetsType targets = this->GetGeneratorTargets();
+ std::vector<cmGeneratorTarget*> targets = this->GetGeneratorTargets();
cmGlobalUnixMakefileGenerator3* gg =
static_cast<cmGlobalUnixMakefileGenerator3*>(this->GlobalGenerator);
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- if (t->second->GetType() == cmState::INTERFACE_LIBRARY)
+ if ((*t)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
cmsys::auto_ptr<cmMakefileTargetGenerator> tg(
- cmMakefileTargetGenerator::New(t->second));
+ cmMakefileTargetGenerator::New(*t));
if (tg.get())
{
tg->WriteRuleFiles();
@@ -174,11 +174,11 @@ void cmLocalUnixMakefileGenerator3::
GetLocalObjectFiles(std::map<std::string, LocalObjectInfo> &localObjectFiles)
{
std::set<std::string> emitted;
- cmGeneratorTargetsType targets = this->GetGeneratorTargets();
- for(cmGeneratorTargetsType::iterator ti = targets.begin();
+ std::vector<cmGeneratorTarget*> targets = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
ti != targets.end(); ++ti)
{
- cmGeneratorTarget* gt = ti->second;
+ cmGeneratorTarget* gt = *ti;
if (gt->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
@@ -188,7 +188,7 @@ GetLocalObjectFiles(std::map<std::string, LocalObjectInfo> &localObjectFiles)
->GetSafeDefinition("CMAKE_BUILD_TYPE"));
// Compute full path to object file directory for this target.
std::string dir;
- dir += gt->Makefile->GetCurrentBinaryDirectory();
+ dir += gt->LocalGenerator->GetCurrentBinaryDirectory();
dir += "/";
dir += this->GetTargetDirectory(gt);
dir += "/";
@@ -417,22 +417,22 @@ void cmLocalUnixMakefileGenerator3
// for each target we just provide a rule to cd up to the top and do a make
// on the target
- cmGeneratorTargetsType targets = this->GetGeneratorTargets();
+ std::vector<cmGeneratorTarget*> targets = this->GetGeneratorTargets();
std::string localName;
- for(cmGeneratorTargetsType::iterator t = targets.begin();
+ for(std::vector<cmGeneratorTarget*>::iterator t = targets.begin();
t != targets.end(); ++t)
{
- if((t->second->GetType() == cmState::EXECUTABLE) ||
- (t->second->GetType() == cmState::STATIC_LIBRARY) ||
- (t->second->GetType() == cmState::SHARED_LIBRARY) ||
- (t->second->GetType() == cmState::MODULE_LIBRARY) ||
- (t->second->GetType() == cmState::OBJECT_LIBRARY) ||
- (t->second->GetType() == cmState::UTILITY))
+ if(((*t)->GetType() == cmState::EXECUTABLE) ||
+ ((*t)->GetType() == cmState::STATIC_LIBRARY) ||
+ ((*t)->GetType() == cmState::SHARED_LIBRARY) ||
+ ((*t)->GetType() == cmState::MODULE_LIBRARY) ||
+ ((*t)->GetType() == cmState::OBJECT_LIBRARY) ||
+ ((*t)->GetType() == cmState::UTILITY))
{
- emitted.insert(t->second->GetName());
+ emitted.insert((*t)->GetName());
// for subdirs add a rule to build this specific target by name.
- localName = this->GetRelativeTargetDirectory(t->second);
+ localName = this->GetRelativeTargetDirectory(*t);
localName += "/rule";
commands.clear();
depends.clear();
@@ -449,23 +449,23 @@ void cmLocalUnixMakefileGenerator3
localName, depends, commands, true);
// Add a target with the canonical name (no prefix, suffix or path).
- if(localName != t->second->GetName())
+ if(localName != (*t)->GetName())
{
commands.clear();
depends.push_back(localName);
this->WriteMakeRule(ruleFileStream, "Convenience name for target.",
- t->second->GetName(), depends, commands, true);
+ (*t)->GetName(), depends, commands, true);
}
// Add a fast rule to build the target
std::string makefileName =
- this->GetRelativeTargetDirectory(t->second);
+ this->GetRelativeTargetDirectory(*t);
makefileName += "/build.make";
// make sure the makefile name is suitable for a makefile
std::string makeTargetName =
- this->GetRelativeTargetDirectory(t->second);
+ this->GetRelativeTargetDirectory(*t);
makeTargetName += "/build";
- localName = t->second->GetName();
+ localName = (*t)->GetName();
localName += "/fast";
depends.clear();
commands.clear();
@@ -479,11 +479,11 @@ void cmLocalUnixMakefileGenerator3
// Add a local name for the rule to relink the target before
// installation.
- if(t->second->NeedRelinkBeforeInstall(this->ConfigName))
+ if((*t)->NeedRelinkBeforeInstall(this->ConfigName))
{
- makeTargetName = this->GetRelativeTargetDirectory(t->second);
+ makeTargetName = this->GetRelativeTargetDirectory(*t);
makeTargetName += "/preinstall";
- localName = t->second->GetName();
+ localName = (*t)->GetName();
localName += "/preinstall";
depends.clear();
commands.clear();
@@ -1762,43 +1762,43 @@ void cmLocalUnixMakefileGenerator3
ruleFileStream
<< "# Targets provided globally by CMake.\n"
<< "\n";
- cmTargets* targets = &(this->Makefile->GetTargets());
- cmTargets::iterator glIt;
- for ( glIt = targets->begin(); glIt != targets->end(); ++ glIt )
+ std::vector<cmGeneratorTarget*> targets = this->GetGeneratorTargets();
+ std::vector<cmGeneratorTarget*>::iterator glIt;
+ for ( glIt = targets.begin(); glIt != targets.end(); ++ glIt )
{
- if ( glIt->second.GetType() == cmState::GLOBAL_TARGET )
+ if ( (*glIt)->GetType() == cmState::GLOBAL_TARGET )
{
- std::string targetString = "Special rule for the target " + glIt->first;
+ std::string targetString = "Special rule for the target " +
+ (*glIt)->GetName();
std::vector<std::string> commands;
std::vector<std::string> depends;
- const char* text = glIt->second.GetProperty("EchoString");
+ const char* text = (*glIt)->GetProperty("EchoString");
if ( !text )
{
text = "Running external command ...";
}
- depends.insert(depends.end(), glIt->second.GetUtilities().begin(),
- glIt->second.GetUtilities().end());
+ depends.insert(depends.end(), (*glIt)->Target->GetUtilities().begin(),
+ (*glIt)->Target->GetUtilities().end());
this->AppendEcho(commands, text,
cmLocalUnixMakefileGenerator3::EchoGlobal);
- cmGeneratorTarget* gt = this->GlobalGenerator
- ->GetGeneratorTarget(&glIt->second);
+ cmGeneratorTarget* gt = *glIt;
// Global targets store their rules in pre- and post-build commands.
this->AppendCustomDepends(depends,
- glIt->second.GetPreBuildCommands());
+ gt->Target->GetPreBuildCommands());
this->AppendCustomDepends(depends,
- glIt->second.GetPostBuildCommands());
+ gt->Target->GetPostBuildCommands());
this->AppendCustomCommands(commands,
- glIt->second.GetPreBuildCommands(),
+ gt->Target->GetPreBuildCommands(),
gt,
cmLocalGenerator::START_OUTPUT);
this->AppendCustomCommands(commands,
- glIt->second.GetPostBuildCommands(),
+ gt->Target->GetPostBuildCommands(),
gt,
cmLocalGenerator::START_OUTPUT);
- std::string targetName = glIt->second.GetName();
+ std::string targetName = gt->GetName();
this->WriteMakeRule(ruleFileStream, targetString.c_str(),
targetName, depends, commands, true);
@@ -1977,7 +1977,7 @@ void cmLocalUnixMakefileGenerator3
cmGeneratorTarget* target)
{
ImplicitDependLanguageMap const& implicitLangs =
- this->GetImplicitDepends(*target->Target);
+ this->GetImplicitDepends(target);
// list the languages
cmakefileStream
@@ -2292,19 +2292,20 @@ cmLocalUnixMakefileGenerator3
//----------------------------------------------------------------------------
cmLocalUnixMakefileGenerator3::ImplicitDependLanguageMap const&
-cmLocalUnixMakefileGenerator3::GetImplicitDepends(cmTarget const& tgt)
+cmLocalUnixMakefileGenerator3::GetImplicitDepends(
+ const cmGeneratorTarget* tgt)
{
- return this->ImplicitDepends[tgt.GetName()];
+ return this->ImplicitDepends[tgt->GetName()];
}
//----------------------------------------------------------------------------
void
-cmLocalUnixMakefileGenerator3::AddImplicitDepends(cmTarget const& tgt,
+cmLocalUnixMakefileGenerator3::AddImplicitDepends(const cmGeneratorTarget* tgt,
const std::string& lang,
const char* obj,
const char* src)
{
- this->ImplicitDepends[tgt.GetName()][lang][obj].push_back(src);
+ this->ImplicitDepends[tgt->GetName()][lang][obj].push_back(src);
}
//----------------------------------------------------------------------------
diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h
index 7e0f248..8f69311 100644
--- a/Source/cmLocalUnixMakefileGenerator3.h
+++ b/Source/cmLocalUnixMakefileGenerator3.h
@@ -21,7 +21,6 @@ class cmCustomCommand;
class cmCustomCommandGenerator;
class cmDepends;
class cmMakefileTargetGenerator;
-class cmTarget;
class cmSourceFile;
/** \class cmLocalUnixMakefileGenerator3
@@ -141,9 +140,11 @@ public:
public std::map<std::string, ImplicitDependFileMap> {};
struct ImplicitDependTargetMap:
public std::map<std::string, ImplicitDependLanguageMap> {};
- ImplicitDependLanguageMap const& GetImplicitDepends(cmTarget const& tgt);
+ ImplicitDependLanguageMap const&
+ GetImplicitDepends(cmGeneratorTarget const* tgt);
- void AddImplicitDepends(cmTarget const& tgt, const std::string& lang,
+ void AddImplicitDepends(cmGeneratorTarget const* tgt,
+ const std::string& lang,
const char* obj, const char* src);
// write the target rules for the local Makefile into the stream
@@ -197,12 +198,12 @@ protected:
const std::string& helpTarget);
void WriteTargetDependRule(std::ostream& ruleFileStream,
- cmTarget& target);
+ cmGeneratorTarget* target);
void WriteTargetCleanRule(std::ostream& ruleFileStream,
- cmTarget& target,
+ cmGeneratorTarget* target,
const std::vector<std::string>& files);
void WriteTargetRequiresRule(std::ostream& ruleFileStream,
- cmTarget& target,
+ cmGeneratorTarget* target,
const std::vector<std::string>& objects);
void AppendRuleDepend(std::vector<std::string>& depends,
diff --git a/Source/cmLocalVisualStudio10Generator.cxx b/Source/cmLocalVisualStudio10Generator.cxx
index 63fc283..d59fdc6 100644
--- a/Source/cmLocalVisualStudio10Generator.cxx
+++ b/Source/cmLocalVisualStudio10Generator.cxx
@@ -74,22 +74,23 @@ cmLocalVisualStudio10Generator::~cmLocalVisualStudio10Generator()
void cmLocalVisualStudio10Generator::Generate()
{
- cmTargets &tgts = this->Makefile->GetTargets();
- for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); ++l)
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- if(l->second.GetType() == cmState::INTERFACE_LIBRARY)
+ if((*l)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
if(static_cast<cmGlobalVisualStudioGenerator*>(this->GlobalGenerator)
- ->TargetIsFortranOnly(l->second))
+ ->TargetIsFortranOnly(*l))
{
- this->CreateSingleVCProj(l->first.c_str(),l->second);
+ this->CreateSingleVCProj((*l)->GetName().c_str(), *l);
}
else
{
cmVisualStudio10TargetGenerator tg(
- &l->second, static_cast<cmGlobalVisualStudio10Generator*>(
+ *l, static_cast<cmGlobalVisualStudio10Generator*>(
this->GetGlobalGenerator()));
tg.Generate();
}
diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx
index a51eb67..d5abf68 100644
--- a/Source/cmLocalVisualStudio6Generator.cxx
+++ b/Source/cmLocalVisualStudio6Generator.cxx
@@ -82,12 +82,12 @@ private:
void cmLocalVisualStudio6Generator::AddCMakeListsRules()
{
- cmTargets &tgts = this->Makefile->GetTargets();
- for(cmTargets::iterator l = tgts.begin();
- l != tgts.end(); l++)
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- if (l->second.GetType() == cmState::INTERFACE_LIBRARY
- || l->second.GetType() == cmState::GLOBAL_TARGET)
+ if ((*l)->GetType() == cmState::INTERFACE_LIBRARY
+ || (*l)->GetType() == cmState::GLOBAL_TARGET)
{
continue;
}
@@ -98,7 +98,7 @@ void cmLocalVisualStudio6Generator::AddCMakeListsRules()
this->Makefile->GetDefinition("CMAKE_SUPPRESS_REGENERATION");
if (!cmSystemTools::IsOn(suppRegenRule))
{
- this->AddDSPBuildRule(l->second);
+ this->AddDSPBuildRule(*l);
}
}
}
@@ -124,54 +124,56 @@ void cmLocalVisualStudio6Generator::OutputDSPFile()
// Create the DSP or set of DSP's for libraries and executables
- cmTargets &tgts = this->Makefile->GetTargets();
-
- // build any targets
- for(cmTargets::iterator l = tgts.begin();
- l != tgts.end(); l++)
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- switch(l->second.GetType())
+ switch((*l)->GetType())
{
case cmState::STATIC_LIBRARY:
case cmState::OBJECT_LIBRARY:
- this->SetBuildType(STATIC_LIBRARY, l->first.c_str(), l->second);
+ this->SetBuildType(STATIC_LIBRARY,
+ (*l)->GetName().c_str(), *l);
break;
case cmState::SHARED_LIBRARY:
case cmState::MODULE_LIBRARY:
- this->SetBuildType(DLL, l->first.c_str(), l->second);
+ this->SetBuildType(DLL,
+ (*l)->GetName().c_str(), *l);
break;
case cmState::EXECUTABLE:
- this->SetBuildType(EXECUTABLE,l->first.c_str(), l->second);
+ this->SetBuildType(EXECUTABLE,
+ (*l)->GetName().c_str(), *l);
break;
case cmState::UTILITY:
case cmState::GLOBAL_TARGET:
- this->SetBuildType(UTILITY, l->first.c_str(), l->second);
+ this->SetBuildType(UTILITY,
+ (*l)->GetName().c_str(), *l);
break;
case cmState::INTERFACE_LIBRARY:
continue;
default:
- cmSystemTools::Error("Bad target type: ", l->first.c_str());
+ cmSystemTools::Error("Bad target type: ", (*l)->GetName().c_str());
break;
}
// INCLUDE_EXTERNAL_MSPROJECT command only affects the workspace
// so don't build a projectfile for it
const char* path =
- l->second.GetProperty("EXTERNAL_MSPROJECT");
+ (*l)->GetProperty("EXTERNAL_MSPROJECT");
if(!path)
{
// check to see if the dsp is going into a sub-directory
- std::string::size_type pos = l->first.rfind('/');
+ std::string::size_type pos = (*l)->GetName().rfind('/');
if(pos != std::string::npos)
{
std::string dir = this->GetCurrentBinaryDirectory();
dir += "/";
- dir += l->first.substr(0, pos);
+ dir += (*l)->GetName().substr(0, pos);
if(!cmSystemTools::MakeDirectory(dir.c_str()))
{
cmSystemTools::Error("Error creating directory: ", dir.c_str());
}
}
- this->CreateSingleDSP(l->first.c_str(),l->second);
+ this->CreateSingleDSP((*l)->GetName().c_str(), *l);
}
}
}
@@ -182,7 +184,7 @@ void cmLocalVisualStudio6Generator::OutputDSPFile()
extern std::string GetVS6TargetName(const std::string& targetName);
void cmLocalVisualStudio6Generator::CreateSingleDSP(const std::string& lname,
- cmTarget &target)
+ cmGeneratorTarget* target)
{
// add to the list of projects
std::string pname = GetVS6TargetName(lname);
@@ -209,9 +211,9 @@ void cmLocalVisualStudio6Generator::CreateSingleDSP(const std::string& lname,
}
-void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt)
+void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmGeneratorTarget *tgt)
{
- std::string dspname = GetVS6TargetName(tgt.GetName());
+ std::string dspname = GetVS6TargetName(tgt->GetName());
dspname += ".dsp.cmake";
cmCustomCommandLine commandLine;
commandLine.push_back(cmSystemTools::GetCMakeCommand());
@@ -243,8 +245,7 @@ void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt)
no_working_directory, true);
if(this->Makefile->GetSource(makefileIn.c_str()))
{
- cmGeneratorTarget* gt = this->GlobalGenerator->GetGeneratorTarget(&tgt);
- gt->AddSource(makefileIn);
+ tgt->AddSource(makefileIn);
}
else
{
@@ -255,7 +256,7 @@ void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt)
void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
const std::string& libName,
- cmTarget &target)
+ cmGeneratorTarget *target)
{
// For utility targets need custom command since pre- and post-
// build does not do anything in Visual Studio 6. In order for the
@@ -263,23 +264,23 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
// special care for dependencies. The first rule must depend on all
// the dependencies of all the rules. The later rules must each
// depend only on the previous rule.
- if ((target.GetType() == cmState::UTILITY ||
- target.GetType() == cmState::GLOBAL_TARGET) &&
- (!target.GetPreBuildCommands().empty() ||
- !target.GetPostBuildCommands().empty()))
+ if ((target->GetType() == cmState::UTILITY ||
+ target->GetType() == cmState::GLOBAL_TARGET) &&
+ (!target->Target->GetPreBuildCommands().empty() ||
+ !target->Target->GetPostBuildCommands().empty()))
{
// Accumulate the dependencies of all the commands.
std::vector<std::string> depends;
for (std::vector<cmCustomCommand>::const_iterator cr =
- target.GetPreBuildCommands().begin();
- cr != target.GetPreBuildCommands().end(); ++cr)
+ target->Target->GetPreBuildCommands().begin();
+ cr != target->Target->GetPreBuildCommands().end(); ++cr)
{
depends.insert(depends.end(),
cr->GetDepends().begin(), cr->GetDepends().end());
}
for (std::vector<cmCustomCommand>::const_iterator cr =
- target.GetPostBuildCommands().begin();
- cr != target.GetPostBuildCommands().end(); ++cr)
+ target->Target->GetPostBuildCommands().begin();
+ cr != target->Target->GetPostBuildCommands().end(); ++cr)
{
depends.insert(depends.end(),
cr->GetDepends().begin(), cr->GetDepends().end());
@@ -288,14 +289,14 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
// Add the pre- and post-build commands in order.
int count = 1;
for (std::vector<cmCustomCommand>::const_iterator cr =
- target.GetPreBuildCommands().begin();
- cr != target.GetPreBuildCommands().end(); ++cr)
+ target->Target->GetPreBuildCommands().begin();
+ cr != target->Target->GetPreBuildCommands().end(); ++cr)
{
this->AddUtilityCommandHack(target, count++, depends, *cr);
}
for (std::vector<cmCustomCommand>::const_iterator cr =
- target.GetPostBuildCommands().begin();
- cr != target.GetPostBuildCommands().end(); ++cr)
+ target->Target->GetPostBuildCommands().begin();
+ cr != target->Target->GetPostBuildCommands().end(); ++cr)
{
this->AddUtilityCommandHack(target, count++, depends, *cr);
}
@@ -304,12 +305,9 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
// We may be modifying the source groups temporarily, so make a copy.
std::vector<cmSourceGroup> sourceGroups = this->Makefile->GetSourceGroups();
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
-
// get the classes from the source lists then add them to the groups
std::vector<cmSourceFile*> classes;
- if (!gt->GetConfigCommonSourceFiles(classes))
+ if (!target->GetConfigCommonSourceFiles(classes))
{
return;
}
@@ -373,11 +371,9 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
}
void cmLocalVisualStudio6Generator
-::WriteGroup(const cmSourceGroup *sg, cmTarget& target,
+::WriteGroup(const cmSourceGroup *sg, cmGeneratorTarget* target,
std::ostream &fout, const std::string& libName)
{
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
const std::vector<const cmSourceFile *> &sourceFiles =
sg->GetSourceFiles();
// If the group is empty, don't write it at all.
@@ -409,9 +405,10 @@ void cmLocalVisualStudio6Generator
std::string compileFlags;
std::vector<std::string> depends;
std::string objectNameDir;
- if(gt->HasExplicitObjectName(*sf))
+ if(target->HasExplicitObjectName(*sf))
{
- objectNameDir = cmSystemTools::GetFilenamePath(gt->GetObjectName(*sf));
+ objectNameDir =
+ cmSystemTools::GetFilenamePath(target->GetObjectName(*sf));
}
// Add per-source file flags.
@@ -482,8 +479,8 @@ void cmLocalVisualStudio6Generator
cmSystemTools::ExpandListArgument(dependsValue, depends);
}
if (GetVS6TargetName(source) != libName ||
- target.GetType() == cmState::UTILITY ||
- target.GetType() == cmState::GLOBAL_TARGET)
+ target->GetType() == cmState::UTILITY ||
+ target->GetType() == cmState::GLOBAL_TARGET)
{
fout << "# Begin Source File\n\n";
@@ -573,15 +570,15 @@ void cmLocalVisualStudio6Generator
void
cmLocalVisualStudio6Generator
-::AddUtilityCommandHack(cmTarget& target, int count,
+::AddUtilityCommandHack(cmGeneratorTarget *target, int count,
std::vector<std::string>& depends,
const cmCustomCommand& origCommand)
{
// Create a fake output that forces the rule to run.
char* output = new char[(strlen(this->GetCurrentBinaryDirectory())
- + target.GetName().size() + 30)];
+ + target->GetName().size() + 30)];
sprintf(output,"%s/%s_force_%i", this->GetCurrentBinaryDirectory(),
- target.GetName().c_str(), count);
+ target->GetName().c_str(), count);
const char* comment = origCommand.GetComment();
if(!comment && origCommand.GetOutputs().empty())
{
@@ -596,8 +593,7 @@ cmLocalVisualStudio6Generator
origCommand.GetCommandLines(), comment,
origCommand.GetWorkingDirectory().c_str()))
{
- cmGeneratorTarget* gt = this->GlobalGenerator->GetGeneratorTarget(&target);
- gt->AddSource(outsf->GetFullPath());
+ target->AddSource(outsf->GetFullPath());
}
// Replace the dependencies with the output of this rule so that the
@@ -713,7 +709,7 @@ void cmLocalVisualStudio6Generator::WriteDSPEndGroup(std::ostream& fout)
void cmLocalVisualStudio6Generator::SetBuildType(BuildType b,
const std::string& libName,
- cmTarget& target)
+ cmGeneratorTarget *target)
{
std::string root= this->Makefile->GetRequiredDefinition("CMAKE_ROOT");
const char *def=
@@ -745,7 +741,7 @@ void cmLocalVisualStudio6Generator::SetBuildType(BuildType b,
this->DSPFooterTemplate += "/DLLFooter.dsptemplate";
break;
case EXECUTABLE:
- if ( target.GetPropertyAsBool("WIN32_EXECUTABLE") )
+ if ( target->GetPropertyAsBool("WIN32_EXECUTABLE") )
{
this->DSPHeaderTemplate = root;
this->DSPHeaderTemplate += "/EXEWinHeader.dsptemplate";
@@ -797,19 +793,16 @@ void cmLocalVisualStudio6Generator::SetBuildType(BuildType b,
//----------------------------------------------------------------------------
cmsys::auto_ptr<cmCustomCommand>
-cmLocalVisualStudio6Generator::MaybeCreateOutputDir(cmTarget& target,
+cmLocalVisualStudio6Generator::MaybeCreateOutputDir(cmGeneratorTarget* target,
const std::string& config)
{
cmsys::auto_ptr<cmCustomCommand> pcc;
// VS6 forgets to create the output directory for archives if it
// differs from the intermediate directory.
- if(target.GetType() != cmState::STATIC_LIBRARY) { return pcc; }
-
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
+ if(target->GetType() != cmState::STATIC_LIBRARY) { return pcc; }
- std::string outDir = gt->GetDirectory(config, false);
+ std::string outDir = target->GetDirectory(config, false);
// Add a pre-link event to create the directory.
cmCustomCommandLine command;
@@ -831,11 +824,11 @@ cmLocalVisualStudio6Generator::MaybeCreateOutputDir(cmTarget& target,
// look for custom rules on a target and collect them together
std::string
-cmLocalVisualStudio6Generator::CreateTargetRules(cmTarget &target,
+cmLocalVisualStudio6Generator::CreateTargetRules(cmGeneratorTarget *target,
const std::string& configName,
const std::string& /* libName */)
{
- if (target.GetType() >= cmState::UTILITY )
+ if (target->GetType() >= cmState::UTILITY )
{
return "";
}
@@ -845,8 +838,8 @@ cmLocalVisualStudio6Generator::CreateTargetRules(cmTarget &target,
// Write the pre-build and pre-link together (VS6 does not support both).
event.Start("PreLink");
- event.Write(target.GetPreBuildCommands());
- event.Write(target.GetPreLinkCommands());
+ event.Write(target->Target->GetPreBuildCommands());
+ event.Write(target->Target->GetPreLinkCommands());
cmsys::auto_ptr<cmCustomCommand> pcc(
this->MaybeCreateImplibDir(target, configName, false));
if(pcc.get())
@@ -862,7 +855,7 @@ cmLocalVisualStudio6Generator::CreateTargetRules(cmTarget &target,
// Write the post-build rules.
event.Start("PostBuild");
- event.Write(target.GetPostBuildCommands());
+ event.Write(target->Target->GetPostBuildCommands());
event.Finish();
customRuleCode += "# End Special Build Tool\n";
@@ -881,7 +874,8 @@ inline std::string removeQuotes(const std::string& s)
std::string
-cmLocalVisualStudio6Generator::GetTargetIncludeOptions(cmTarget &target,
+cmLocalVisualStudio6Generator::GetTargetIncludeOptions(
+ cmGeneratorTarget *target,
const std::string& config)
{
std::string includeOptions;
@@ -892,12 +886,10 @@ cmLocalVisualStudio6Generator::GetTargetIncludeOptions(cmTarget &target,
unsigned int maxIncludeLength = 3000;
bool useShortPath = false;
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
for(int j=0; j < 2; ++j)
{
std::vector<std::string> includes;
- this->GetIncludeDirectories(includes, gt, "C", config);
+ this->GetIncludeDirectories(includes, target, "C", config);
std::vector<std::string>::iterator i;
for(i = includes.begin(); i != includes.end(); ++i)
@@ -945,11 +937,11 @@ cmLocalVisualStudio6Generator::GetTargetIncludeOptions(cmTarget &target,
void cmLocalVisualStudio6Generator
::WriteDSPHeader(std::ostream& fout,
- const std::string& libName, cmTarget &target,
+ const std::string& libName, cmGeneratorTarget* target,
std::vector<cmSourceGroup> &)
{
- bool targetBuilds = (target.GetType() >= cmState::EXECUTABLE &&
- target.GetType() <= cmState::MODULE_LIBRARY);
+ bool targetBuilds = (target->GetType() >= cmState::EXECUTABLE &&
+ target->GetType() <= cmState::MODULE_LIBRARY);
#ifdef CM_USE_OLD_VS6
// Lookup the library and executable output directories.
std::string libPath;
@@ -1059,7 +1051,8 @@ void cmLocalVisualStudio6Generator
}
}
std::vector<std::string>::const_iterator i;
- const std::vector<std::string>& libdirs = target.GetLinkDirectories();
+ const std::vector<std::string>& libdirs =
+ target->Target->GetLinkDirectories();
for(i = libdirs.begin(); i != libdirs.end(); ++i)
{
std::string path = *i;
@@ -1101,19 +1094,19 @@ void cmLocalVisualStudio6Generator
}
// find link libraries
const cmTarget::LinkLibraryVectorType& libs =
- target.GetLinkLibrariesForVS6();
+ target->Target->GetLinkLibrariesForVS6();
cmTarget::LinkLibraryVectorType::const_iterator j;
for(j = libs.begin(); j != libs.end(); ++j)
{
// add libraries to executables and dlls (but never include
// a library in a library, bad recursion)
// NEVER LINK STATIC LIBRARIES TO OTHER STATIC LIBRARIES
- if ((target.GetType() != cmState::SHARED_LIBRARY
- && target.GetType() != cmState::STATIC_LIBRARY
- && target.GetType() != cmState::MODULE_LIBRARY) ||
- (target.GetType()==cmState::SHARED_LIBRARY
+ if ((target->GetType() != cmState::SHARED_LIBRARY
+ && target->GetType() != cmState::STATIC_LIBRARY
+ && target->GetType() != cmState::MODULE_LIBRARY) ||
+ (target->GetType()==cmState::SHARED_LIBRARY
&& libName != GetVS6TargetName(j->first)) ||
- (target.GetType()==cmState::MODULE_LIBRARY
+ (target->GetType()==cmState::MODULE_LIBRARY
&& libName != GetVS6TargetName(j->first)))
{
// Compute the proper name to use to link this library.
@@ -1195,7 +1188,7 @@ void cmLocalVisualStudio6Generator
std::string extraLinkOptionsRelease;
std::string extraLinkOptionsMinSizeRel;
std::string extraLinkOptionsRelWithDebInfo;
- if(target.GetType() == cmState::EXECUTABLE)
+ if(target->GetType() == cmState::EXECUTABLE)
{
extraLinkOptions = this->Makefile->
GetRequiredDefinition("CMAKE_EXE_LINKER_FLAGS");
@@ -1208,7 +1201,7 @@ void cmLocalVisualStudio6Generator
extraLinkOptionsRelWithDebInfo = this->Makefile->
GetRequiredDefinition("CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO");
}
- if(target.GetType() == cmState::SHARED_LIBRARY)
+ if(target->GetType() == cmState::SHARED_LIBRARY)
{
extraLinkOptions = this->Makefile->
GetRequiredDefinition("CMAKE_SHARED_LINKER_FLAGS");
@@ -1221,7 +1214,7 @@ void cmLocalVisualStudio6Generator
extraLinkOptionsRelWithDebInfo = this->Makefile->
GetRequiredDefinition("CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO");
}
- if(target.GetType() == cmState::MODULE_LIBRARY)
+ if(target->GetType() == cmState::MODULE_LIBRARY)
{
extraLinkOptions = this->Makefile->
GetRequiredDefinition("CMAKE_MODULE_LINKER_FLAGS");
@@ -1236,63 +1229,61 @@ void cmLocalVisualStudio6Generator
}
// Get extra linker options for this target.
- if(const char* targetLinkFlags = target.GetProperty("LINK_FLAGS"))
+ if(const char* targetLinkFlags = target->GetProperty("LINK_FLAGS"))
{
extraLinkOptions += " ";
extraLinkOptions += targetLinkFlags;
}
- if(const char* targetLinkFlags = target.GetProperty("LINK_FLAGS_DEBUG"))
+ if(const char* targetLinkFlags = target->GetProperty("LINK_FLAGS_DEBUG"))
{
extraLinkOptionsDebug += " ";
extraLinkOptionsDebug += targetLinkFlags;
}
- if(const char* targetLinkFlags = target.GetProperty("LINK_FLAGS_RELEASE"))
+ if(const char* targetLinkFlags = target->GetProperty("LINK_FLAGS_RELEASE"))
{
extraLinkOptionsRelease += " ";
extraLinkOptionsRelease += targetLinkFlags;
}
- if(const char* targetLinkFlags = target.GetProperty("LINK_FLAGS_MINSIZEREL"))
+ if(const char* targetLinkFlags =
+ target->GetProperty("LINK_FLAGS_MINSIZEREL"))
{
extraLinkOptionsMinSizeRel += " ";
extraLinkOptionsMinSizeRel += targetLinkFlags;
}
if(const char* targetLinkFlags =
- target.GetProperty("LINK_FLAGS_RELWITHDEBINFO"))
+ target->GetProperty("LINK_FLAGS_RELWITHDEBINFO"))
{
extraLinkOptionsRelWithDebInfo += " ";
extraLinkOptionsRelWithDebInfo += targetLinkFlags;
}
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
-
// Get standard libraries for this language.
if(targetBuilds)
{
// Get the language to use for linking.
std::vector<std::string> configs;
- target.GetMakefile()->GetConfigurations(configs);
+ target->Target->GetMakefile()->GetConfigurations(configs);
std::vector<std::string>::const_iterator it = configs.begin();
- const std::string& linkLanguage = gt->GetLinkerLanguage(*it);
+ const std::string& linkLanguage = target->GetLinkerLanguage(*it);
for ( ; it != configs.end(); ++it)
{
- const std::string& configLinkLanguage = gt->GetLinkerLanguage(*it);
+ const std::string& configLinkLanguage = target->GetLinkerLanguage(*it);
if (configLinkLanguage != linkLanguage)
{
cmSystemTools::Error
("Linker language must not vary by configuration for target: ",
- target.GetName().c_str());
+ target->GetName().c_str());
}
}
if(linkLanguage.empty())
{
cmSystemTools::Error
("CMake can not determine linker language for target: ",
- target.GetName().c_str());
+ target->GetName().c_str());
return;
}
@@ -1313,13 +1304,13 @@ void cmLocalVisualStudio6Generator
// Compute version number information.
std::string targetVersionFlag;
- if(target.GetType() == cmState::EXECUTABLE ||
- target.GetType() == cmState::SHARED_LIBRARY ||
- target.GetType() == cmState::MODULE_LIBRARY)
+ if(target->GetType() == cmState::EXECUTABLE ||
+ target->GetType() == cmState::SHARED_LIBRARY ||
+ target->GetType() == cmState::MODULE_LIBRARY)
{
int major;
int minor;
- gt->GetTargetVersion(major, minor);
+ target->GetTargetVersion(major, minor);
std::ostringstream targetVersionStream;
targetVersionStream << "/version:" << major << "." << minor;
targetVersionFlag = targetVersionStream.str();
@@ -1332,20 +1323,20 @@ void cmLocalVisualStudio6Generator
std::string outputNameRelease = outputName;
std::string outputNameMinSizeRel = outputName;
std::string outputNameRelWithDebInfo = outputName;
- if(target.GetType() == cmState::EXECUTABLE ||
- target.GetType() == cmState::STATIC_LIBRARY ||
- target.GetType() == cmState::SHARED_LIBRARY ||
- target.GetType() == cmState::MODULE_LIBRARY)
+ if(target->GetType() == cmState::EXECUTABLE ||
+ target->GetType() == cmState::STATIC_LIBRARY ||
+ target->GetType() == cmState::SHARED_LIBRARY ||
+ target->GetType() == cmState::MODULE_LIBRARY)
{
- outputName = gt->GetFullName();
- outputNameDebug = gt->GetFullName("Debug");
- outputNameRelease = gt->GetFullName("Release");
- outputNameMinSizeRel = gt->GetFullName("MinSizeRel");
- outputNameRelWithDebInfo = gt->GetFullName("RelWithDebInfo");
+ outputName = target->GetFullName();
+ outputNameDebug = target->GetFullName("Debug");
+ outputNameRelease = target->GetFullName("Release");
+ outputNameMinSizeRel = target->GetFullName("MinSizeRel");
+ outputNameRelWithDebInfo = target->GetFullName("RelWithDebInfo");
}
- else if(target.GetType() == cmState::OBJECT_LIBRARY)
+ else if(target->GetType() == cmState::OBJECT_LIBRARY)
{
- outputName = target.GetName();
+ outputName = target->GetName();
outputName += ".lib";
outputNameDebug = outputName;
outputNameRelease = outputName;
@@ -1359,30 +1350,30 @@ void cmLocalVisualStudio6Generator
std::string outputDirRelease;
std::string outputDirMinSizeRel;
std::string outputDirRelWithDebInfo;
- if(target.GetType() == cmState::EXECUTABLE ||
- target.GetType() == cmState::STATIC_LIBRARY ||
- target.GetType() == cmState::SHARED_LIBRARY ||
- target.GetType() == cmState::MODULE_LIBRARY)
+ if(target->GetType() == cmState::EXECUTABLE ||
+ target->GetType() == cmState::STATIC_LIBRARY ||
+ target->GetType() == cmState::SHARED_LIBRARY ||
+ target->GetType() == cmState::MODULE_LIBRARY)
{
#ifdef CM_USE_OLD_VS6
outputDirOld =
removeQuotes(this->ConvertToOutputFormat
- (gt->GetDirectory().c_str(), SHELL));
+ (target->GetDirectory().c_str(), SHELL));
#endif
outputDirDebug =
removeQuotes(this->ConvertToOutputFormat(
- gt->GetDirectory("Debug").c_str(), SHELL));
+ target->GetDirectory("Debug").c_str(), SHELL));
outputDirRelease =
removeQuotes(this->ConvertToOutputFormat(
- gt->GetDirectory("Release").c_str(), SHELL));
+ target->GetDirectory("Release").c_str(), SHELL));
outputDirMinSizeRel =
removeQuotes(this->ConvertToOutputFormat(
- gt->GetDirectory("MinSizeRel").c_str(), SHELL));
+ target->GetDirectory("MinSizeRel").c_str(), SHELL));
outputDirRelWithDebInfo =
removeQuotes(this->ConvertToOutputFormat(
- gt->GetDirectory("RelWithDebInfo").c_str(), SHELL));
+ target->GetDirectory("RelWithDebInfo").c_str(), SHELL));
}
- else if(target.GetType() == cmState::OBJECT_LIBRARY)
+ else if(target->GetType() == cmState::OBJECT_LIBRARY)
{
std::string outputDir = cmake::GetCMakeFilesDirectoryPostSlash();
outputDirDebug = outputDir + "Debug";
@@ -1396,9 +1387,9 @@ void cmLocalVisualStudio6Generator
std::string optionsRelease;
std::string optionsMinSizeRel;
std::string optionsRelWithDebInfo;
- if(target.GetType() == cmState::EXECUTABLE ||
- target.GetType() == cmState::SHARED_LIBRARY ||
- target.GetType() == cmState::MODULE_LIBRARY)
+ if(target->GetType() == cmState::EXECUTABLE ||
+ target->GetType() == cmState::SHARED_LIBRARY ||
+ target->GetType() == cmState::MODULE_LIBRARY)
{
extraLinkOptionsDebug =
extraLinkOptions + " " + extraLinkOptionsDebug;
@@ -1424,24 +1415,24 @@ void cmLocalVisualStudio6Generator
std::string targetImplibFlagRelease;
std::string targetImplibFlagMinSizeRel;
std::string targetImplibFlagRelWithDebInfo;
- if(target.GetType() == cmState::SHARED_LIBRARY ||
- target.GetType() == cmState::MODULE_LIBRARY ||
- target.GetType() == cmState::EXECUTABLE)
+ if(target->GetType() == cmState::SHARED_LIBRARY ||
+ target->GetType() == cmState::MODULE_LIBRARY ||
+ target->GetType() == cmState::EXECUTABLE)
{
- std::string fullPathImpDebug = gt->GetDirectory("Debug", true);
- std::string fullPathImpRelease = gt->GetDirectory("Release", true);
+ std::string fullPathImpDebug = target->GetDirectory("Debug", true);
+ std::string fullPathImpRelease = target->GetDirectory("Release", true);
std::string fullPathImpMinSizeRel =
- gt->GetDirectory("MinSizeRel", true);
+ target->GetDirectory("MinSizeRel", true);
std::string fullPathImpRelWithDebInfo =
- gt->GetDirectory("RelWithDebInfo", true);
+ target->GetDirectory("RelWithDebInfo", true);
fullPathImpDebug += "/";
fullPathImpRelease += "/";
fullPathImpMinSizeRel += "/";
fullPathImpRelWithDebInfo += "/";
- fullPathImpDebug += gt->GetFullName("Debug", true);
- fullPathImpRelease += gt->GetFullName("Release", true);
- fullPathImpMinSizeRel += gt->GetFullName("MinSizeRel", true);
- fullPathImpRelWithDebInfo += gt->GetFullName("RelWithDebInfo", true);
+ fullPathImpDebug += target->GetFullName("Debug", true);
+ fullPathImpRelease += target->GetFullName("Release", true);
+ fullPathImpMinSizeRel += target->GetFullName("MinSizeRel", true);
+ fullPathImpRelWithDebInfo += target->GetFullName("RelWithDebInfo", true);
targetImplibFlagDebug = "/implib:";
targetImplibFlagRelease = "/implib:";
@@ -1494,7 +1485,7 @@ void cmLocalVisualStudio6Generator
std::string staticLibOptionsRelease;
std::string staticLibOptionsMinSizeRel;
std::string staticLibOptionsRelWithDebInfo;
- if(target.GetType() == cmState::STATIC_LIBRARY )
+ if(target->GetType() == cmState::STATIC_LIBRARY )
{
const char *libflagsGlobal =
this->Makefile->GetSafeDefinition("CMAKE_STATIC_LINKER_FLAGS");
@@ -1513,7 +1504,7 @@ void cmLocalVisualStudio6Generator
this->AppendFlags(staticLibOptionsRelWithDebInfo, this->Makefile->
GetSafeDefinition("CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO"));
- const char *libflags = target.GetProperty("STATIC_LIBRARY_FLAGS");
+ const char *libflags = target->GetProperty("STATIC_LIBRARY_FLAGS");
this->AppendFlags(staticLibOptions, libflags);
this->AppendFlags(staticLibOptionsDebug, libflags);
this->AppendFlags(staticLibOptionsRelease, libflags);
@@ -1521,13 +1512,13 @@ void cmLocalVisualStudio6Generator
this->AppendFlags(staticLibOptionsRelWithDebInfo, libflags);
this->AppendFlags(staticLibOptionsDebug,
- target.GetProperty("STATIC_LIBRARY_FLAGS_DEBUG"));
+ target->GetProperty("STATIC_LIBRARY_FLAGS_DEBUG"));
this->AppendFlags(staticLibOptionsRelease,
- target.GetProperty("STATIC_LIBRARY_FLAGS_RELEASE"));
+ target->GetProperty("STATIC_LIBRARY_FLAGS_RELEASE"));
this->AppendFlags(staticLibOptionsMinSizeRel,
- target.GetProperty("STATIC_LIBRARY_FLAGS_MINSIZEREL"));
+ target->GetProperty("STATIC_LIBRARY_FLAGS_MINSIZEREL"));
this->AppendFlags(staticLibOptionsRelWithDebInfo,
- target.GetProperty("STATIC_LIBRARY_FLAGS_RELWITHDEBINFO"));
+ target->GetProperty("STATIC_LIBRARY_FLAGS_RELWITHDEBINFO"));
std::string objects;
this->OutputObjects(target, "LIB", objects);
@@ -1543,7 +1534,7 @@ void cmLocalVisualStudio6Generator
// Add the export symbol definition for shared library objects.
std::string exportSymbol;
- if(const char* exportMacro = gt->GetExportMacro())
+ if(const char* exportMacro = target->GetExportMacro())
{
exportSymbol = exportMacro;
}
@@ -1567,8 +1558,8 @@ void cmLocalVisualStudio6Generator
libnameExports.c_str());
cmSystemTools::ReplaceString(line, "CMAKE_MFC_FLAG",
mfcFlag);
- if(target.GetType() == cmState::STATIC_LIBRARY ||
- target.GetType() == cmState::OBJECT_LIBRARY)
+ if(target->GetType() == cmState::STATIC_LIBRARY ||
+ target->GetType() == cmState::OBJECT_LIBRARY)
{
cmSystemTools::ReplaceString(line, "CM_STATIC_LIB_ARGS_DEBUG",
staticLibOptionsDebug.c_str());
@@ -1674,7 +1665,7 @@ void cmLocalVisualStudio6Generator
(exePath.c_str(), SHELL)).c_str());
#endif
- if(targetBuilds || target.GetType() == cmState::OBJECT_LIBRARY)
+ if(targetBuilds || target->GetType() == cmState::OBJECT_LIBRARY)
{
cmSystemTools::ReplaceString(line, "OUTPUT_DIRECTORY_DEBUG",
outputDirDebug.c_str());
@@ -1698,8 +1689,8 @@ void cmLocalVisualStudio6Generator
= this->Makefile->GetDefinition("CMAKE_DEBUG_POSTFIX");
cmSystemTools::ReplaceString(line, "DEBUG_POSTFIX",
debugPostfix?debugPostfix:"");
- if(target.GetType() >= cmState::EXECUTABLE &&
- target.GetType() <= cmState::OBJECT_LIBRARY)
+ if(target->GetType() >= cmState::EXECUTABLE &&
+ target->GetType() <= cmState::OBJECT_LIBRARY)
{
// store flags for each configuration
std::string flags = " ";
@@ -1708,24 +1699,24 @@ void cmLocalVisualStudio6Generator
std::string flagsDebug = " ";
std::string flagsRelWithDebInfo = " ";
std::vector<std::string> configs;
- target.GetMakefile()->GetConfigurations(configs);
+ target->Target->GetMakefile()->GetConfigurations(configs);
std::vector<std::string>::const_iterator it = configs.begin();
- const std::string& linkLanguage = gt->GetLinkerLanguage(*it);
+ const std::string& linkLanguage = target->GetLinkerLanguage(*it);
for ( ; it != configs.end(); ++it)
{
- const std::string& configLinkLanguage = gt->GetLinkerLanguage(*it);
+ const std::string& configLinkLanguage = target->GetLinkerLanguage(*it);
if (configLinkLanguage != linkLanguage)
{
cmSystemTools::Error
("Linker language must not vary by configuration for target: ",
- target.GetName().c_str());
+ target->GetName().c_str());
}
}
if(linkLanguage.empty())
{
cmSystemTools::Error
("CMake can not determine linker language for target: ",
- target.GetName().c_str());
+ target->GetName().c_str());
return;
}
// if CXX is on and the target contains cxx code then add the cxx flags
@@ -1750,12 +1741,12 @@ void cmLocalVisualStudio6Generator
flagsRelWithDebInfo = this->Makefile->GetSafeDefinition(flagVar.c_str());
flagsRelWithDebInfo += " -DCMAKE_INTDIR=\\\"RelWithDebInfo\\\" ";
- this->AddCompileOptions(flags, gt, linkLanguage, "");
- this->AddCompileOptions(flagsDebug, gt, linkLanguage, "Debug");
- this->AddCompileOptions(flagsRelease, gt, linkLanguage, "Release");
- this->AddCompileOptions(flagsMinSizeRel, gt, linkLanguage,
+ this->AddCompileOptions(flags, target, linkLanguage, "");
+ this->AddCompileOptions(flagsDebug, target, linkLanguage, "Debug");
+ this->AddCompileOptions(flagsRelease, target, linkLanguage, "Release");
+ this->AddCompileOptions(flagsMinSizeRel, target, linkLanguage,
"MinSizeRel");
- this->AddCompileOptions(flagsRelWithDebInfo, gt, linkLanguage,
+ this->AddCompileOptions(flagsRelWithDebInfo, target, linkLanguage,
"RelWithDebInfo");
// if _UNICODE and _SBCS are not found, then add -D_MBCS
@@ -1775,14 +1766,14 @@ void cmLocalVisualStudio6Generator
std::set<std::string> minsizeDefinesSet;
std::set<std::string> debugrelDefinesSet;
- this->AddCompileDefinitions(definesSet, gt, "", linkLanguage);
- this->AddCompileDefinitions(debugDefinesSet, gt,
+ this->AddCompileDefinitions(definesSet, target, "", linkLanguage);
+ this->AddCompileDefinitions(debugDefinesSet, target,
"DEBUG", linkLanguage);
- this->AddCompileDefinitions(releaseDefinesSet, gt,
+ this->AddCompileDefinitions(releaseDefinesSet, target,
"RELEASE", linkLanguage);
- this->AddCompileDefinitions(minsizeDefinesSet, gt,
+ this->AddCompileDefinitions(minsizeDefinesSet, target,
"MINSIZEREL", linkLanguage);
- this->AddCompileDefinitions(debugrelDefinesSet, gt,
+ this->AddCompileDefinitions(debugrelDefinesSet, target,
"RELWITHDEBINFO", linkLanguage);
std::string defines = " ";
@@ -1850,15 +1841,13 @@ void cmLocalVisualStudio6Generator::WriteDSPFooter(std::ostream& fout)
//----------------------------------------------------------------------------
void cmLocalVisualStudio6Generator
-::ComputeLinkOptions(cmTarget& target,
+::ComputeLinkOptions(cmGeneratorTarget *target,
const std::string& configName,
const std::string extraOptions,
std::string& options)
{
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
// Compute the link information for this configuration.
- cmComputeLinkInformation* pcli = gt->GetLinkInformation(configName);
+ cmComputeLinkInformation* pcli = target->GetLinkInformation(configName);
if(!pcli)
{
return;
@@ -1917,15 +1906,13 @@ void cmLocalVisualStudio6Generator
//----------------------------------------------------------------------------
void cmLocalVisualStudio6Generator
-::OutputObjects(cmTarget& target, const char* tool,
+::OutputObjects(cmGeneratorTarget* target, const char* tool,
std::string& options)
{
// VS 6 does not support per-config source locations so we
// list object library content on the link line instead.
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
std::vector<std::string> objs;
- gt->UseObjectLibraries(objs, "");
+ target->UseObjectLibraries(objs, "");
for(std::vector<std::string>::const_iterator
oi = objs.begin(); oi != objs.end(); ++oi)
{
@@ -1948,7 +1935,7 @@ cmLocalVisualStudio6Generator
//----------------------------------------------------------------------------
std::string
cmLocalVisualStudio6Generator
-::ComputeLongestObjectDirectory(cmTarget&) const
+::ComputeLongestObjectDirectory(cmGeneratorTarget const*) const
{
// Compute the maximum length configuration name.
std::string config_max;
diff --git a/Source/cmLocalVisualStudio6Generator.h b/Source/cmLocalVisualStudio6Generator.h
index b3b61bb..dab32a5 100644
--- a/Source/cmLocalVisualStudio6Generator.h
+++ b/Source/cmLocalVisualStudio6Generator.h
@@ -14,7 +14,6 @@
#include "cmLocalVisualStudioGenerator.h"
-class cmTarget;
class cmSourceFile;
class cmSourceGroup;
class cmCustomCommand;
@@ -47,50 +46,52 @@ public:
/**
* Specify the type of the build: static, dll, or executable.
*/
- void SetBuildType(BuildType, const std::string& libName, cmTarget&);
+ void SetBuildType(BuildType, const std::string& libName, cmGeneratorTarget*);
virtual
std::string GetTargetDirectory(cmGeneratorTarget const* target) const;
- virtual std::string ComputeLongestObjectDirectory(cmTarget&) const;
+ virtual std::string
+ ComputeLongestObjectDirectory(cmGeneratorTarget const*) const;
private:
std::string DSPHeaderTemplate;
std::string DSPFooterTemplate;
- void CreateSingleDSP(const std::string& lname, cmTarget &tgt);
+ void CreateSingleDSP(const std::string& lname, cmGeneratorTarget* tgt);
void WriteDSPFile(std::ostream& fout, const std::string& libName,
- cmTarget &tgt);
+ cmGeneratorTarget* tgt);
void WriteDSPBeginGroup(std::ostream& fout,
const char* group,
const char* filter);
void WriteDSPEndGroup(std::ostream& fout);
void WriteDSPHeader(std::ostream& fout, const std::string& libName,
- cmTarget &tgt, std::vector<cmSourceGroup> &sgs);
+ cmGeneratorTarget* tgt, std::vector<cmSourceGroup> &sgs);
void WriteDSPFooter(std::ostream& fout);
- void AddDSPBuildRule(cmTarget& tgt);
+ void AddDSPBuildRule(cmGeneratorTarget* tgt);
void WriteCustomRule(std::ostream& fout,
const char* source,
const cmCustomCommand& command,
const char* flags);
- void AddUtilityCommandHack(cmTarget& target, int count,
+ void AddUtilityCommandHack(cmGeneratorTarget* target, int count,
std::vector<std::string>& depends,
const cmCustomCommand& origCommand);
- void WriteGroup(const cmSourceGroup *sg, cmTarget& target,
+ void WriteGroup(const cmSourceGroup *sg, cmGeneratorTarget* target,
std::ostream &fout, const std::string& libName);
class EventWriter;
friend class EventWriter;
cmsys::auto_ptr<cmCustomCommand>
- MaybeCreateOutputDir(cmTarget& target, const std::string& config);
- std::string CreateTargetRules(cmTarget &target,
+ MaybeCreateOutputDir(cmGeneratorTarget *target, const std::string& config);
+ std::string CreateTargetRules(cmGeneratorTarget* target,
const std::string& configName,
const std::string& libName);
- void ComputeLinkOptions(cmTarget& target, const std::string& configName,
+ void ComputeLinkOptions(cmGeneratorTarget* target,
+ const std::string& configName,
const std::string extraOptions,
std::string& options);
- void OutputObjects(cmTarget& target, const char* tool,
+ void OutputObjects(cmGeneratorTarget* target, const char* tool,
std::string& options);
- std::string GetTargetIncludeOptions(cmTarget &target,
+ std::string GetTargetIncludeOptions(cmGeneratorTarget* target,
const std::string& config);
std::vector<std::string> Configurations;
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index 819998c..ca8d697 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -34,7 +34,8 @@ public:
LocalGenerator(e) {}
typedef cmComputeLinkInformation::ItemVector ItemVector;
void OutputLibraries(std::ostream& fout, ItemVector const& libs);
- void OutputObjects(std::ostream& fout, cmTarget* t, const char* isep = 0);
+ void OutputObjects(std::ostream& fout, cmGeneratorTarget* t,
+ const char* isep = 0);
private:
cmLocalVisualStudio7Generator* LocalGenerator;
};
@@ -67,19 +68,19 @@ cmLocalVisualStudio7Generator::~cmLocalVisualStudio7Generator()
void cmLocalVisualStudio7Generator::AddHelperCommands()
{
// Now create GUIDs for targets
- cmTargets &tgts = this->Makefile->GetTargets();
-
- for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- if(l->second.GetType() == cmState::INTERFACE_LIBRARY)
+ if((*l)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
- const char* path = l->second.GetProperty("EXTERNAL_MSPROJECT");
+ const char* path = (*l)->GetProperty("EXTERNAL_MSPROJECT");
if(path)
{
this->ReadAndStoreExternalGUID(
- l->second.GetName().c_str(), path);
+ (*l)->GetName().c_str(), path);
}
}
@@ -95,7 +96,6 @@ void cmLocalVisualStudio7Generator::Generate()
void cmLocalVisualStudio7Generator::AddCMakeListsRules()
{
- cmTargets &tgts = this->Makefile->GetTargets();
// Create the regeneration custom rule.
if(!this->Makefile->IsOn("CMAKE_SUPPRESS_REGENERATION"))
{
@@ -104,17 +104,17 @@ void cmLocalVisualStudio7Generator::AddCMakeListsRules()
if(cmSourceFile* sf = this->CreateVCProjBuildRule())
{
// Add the rule to targets that need it.
- for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); ++l)
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
+ l != tgts.end(); ++l)
{
- if (l->second.GetType() == cmState::GLOBAL_TARGET)
+ if ((*l)->GetType() == cmState::GLOBAL_TARGET)
{
continue;
}
- if(l->first != CMAKE_CHECK_BUILD_SYSTEM_TARGET)
+ if((*l)->GetName() != CMAKE_CHECK_BUILD_SYSTEM_TARGET)
{
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&l->second);
- gt->AddSource(sf->GetFullPath());
+ (*l)->AddSource(sf->GetFullPath());
}
}
}
@@ -126,12 +126,11 @@ void cmLocalVisualStudio7Generator::FixGlobalTargets()
// Visual Studio .NET 2003 Service Pack 1 will not run post-build
// commands for targets in which no sources are built. Add dummy
// rules to force these targets to build.
- cmTargets &tgts = this->Makefile->GetTargets();
- for(cmTargets::iterator l = tgts.begin();
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
l != tgts.end(); l++)
{
- cmTarget& tgt = l->second;
- if(tgt.GetType() == cmState::GLOBAL_TARGET)
+ if((*l)->GetType() == cmState::GLOBAL_TARGET)
{
std::vector<std::string> no_depends;
cmCustomCommandLine force_command;
@@ -143,16 +142,14 @@ void cmLocalVisualStudio7Generator::FixGlobalTargets()
std::string force = this->GetCurrentBinaryDirectory();
force += cmake::GetCMakeFilesDirectory();
force += "/";
- force += tgt.GetName();
+ force += (*l)->GetName();
force += "_force";
if(cmSourceFile* file =
this->Makefile->AddCustomCommandToOutput(
force.c_str(), no_depends, no_main_dependency,
force_commands, " ", 0, true))
{
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&tgt);
- gt->AddSource(file->GetFullPath());
+ (*l)->AddSource(file->GetFullPath());
}
}
}
@@ -176,21 +173,21 @@ void cmLocalVisualStudio7Generator::WriteProjectFiles()
}
// Get the set of targets in this directory.
- cmTargets &tgts = this->Makefile->GetTargets();
+ std::vector<cmGeneratorTarget*> tgts = this->GetGeneratorTargets();
// Create the project file for each target.
- for(cmTargets::iterator l = tgts.begin();
+ for(std::vector<cmGeneratorTarget*>::iterator l = tgts.begin();
l != tgts.end(); l++)
{
- if(l->second.GetType() == cmState::INTERFACE_LIBRARY)
+ if((*l)->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
}
// INCLUDE_EXTERNAL_MSPROJECT command only affects the workspace
// so don't build a projectfile for it
- if(!l->second.GetProperty("EXTERNAL_MSPROJECT"))
+ if(!(*l)->GetProperty("EXTERNAL_MSPROJECT"))
{
- this->CreateSingleVCProj(l->first.c_str(),l->second);
+ this->CreateSingleVCProj((*l)->GetName().c_str(), *l);
}
}
}
@@ -228,7 +225,7 @@ void cmLocalVisualStudio7Generator::WriteStampFiles()
//----------------------------------------------------------------------------
void cmLocalVisualStudio7Generator
-::CreateSingleVCProj(const std::string& lname, cmTarget &target)
+::CreateSingleVCProj(const std::string& lname, cmGeneratorTarget *target)
{
cmGlobalVisualStudioGenerator* gg
= static_cast<cmGlobalVisualStudioGenerator*>(this->GlobalGenerator);
@@ -244,7 +241,7 @@ void cmLocalVisualStudio7Generator
}
// add to the list of projects
- target.SetProperty("GENERATOR_FILE_NAME",lname.c_str());
+ target->Target->SetProperty("GENERATOR_FILE_NAME",lname.c_str());
// create the dsp.cmake file
std::string fname;
fname = this->GetCurrentBinaryDirectory();
@@ -327,8 +324,9 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule()
}
void cmLocalVisualStudio7Generator::WriteConfigurations(
- std::ostream& fout, std::vector<std::string> const& configs,
- const std::string& libName, cmTarget &target
+ std::ostream& fout,
+ std::vector<std::string> const& configs,
+ const std::string& libName, cmGeneratorTarget *target
)
{
fout << "\t<Configurations>\n";
@@ -646,7 +644,7 @@ private:
void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
const std::string& configName,
const std::string& libName,
- cmTarget &target)
+ cmGeneratorTarget *target)
{
const char* mfcFlag = this->Makefile->GetDefinition("CMAKE_MFC_FLAG");
if(!mfcFlag)
@@ -667,10 +665,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
const char* projectType = 0;
bool targetBuilds = true;
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
-
- switch(target.GetType())
+ switch(target->GetType())
{
case cmState::OBJECT_LIBRARY:
targetBuilds = false; // no manifest tool for object library
@@ -702,12 +697,12 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
{
const std::string& linkLanguage = (this->FortranProject?
std::string("Fortran"):
- gt->GetLinkerLanguage(configName));
+ target->GetLinkerLanguage(configName));
if(linkLanguage.empty())
{
cmSystemTools::Error
("CMake can not determine linker language for target: ",
- target.GetName().c_str());
+ target->GetName().c_str());
return;
}
if(linkLanguage == "C" || linkLanguage == "CXX"
@@ -733,12 +728,12 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
}
// Add the target-specific flags.
- this->AddCompileOptions(flags, gt, linkLanguage, configName);
+ this->AddCompileOptions(flags, target, linkLanguage, configName);
}
if(this->FortranProject)
{
- switch(this->GetFortranFormat(target.GetProperty("Fortran_FORMAT")))
+ switch(this->GetFortranFormat(target->GetProperty("Fortran_FORMAT")))
{
case FortranFormatFixed: flags += " -fixed"; break;
case FortranFormatFree: flags += " -free"; break;
@@ -765,7 +760,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
targetOptions.Parse(defineFlags.c_str());
targetOptions.ParseFinish();
std::vector<std::string> targetDefines;
- gt->GetCompileDefinitions(targetDefines, configName, "CXX");
+ target->GetCompileDefinitions(targetDefines, configName, "CXX");
targetOptions.AddDefines(targetDefines);
targetOptions.SetVerboseMakefile(
this->Makefile->IsOn("CMAKE_VERBOSE_MAKEFILE"));
@@ -777,22 +772,22 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
targetOptions.AddDefine(configDefine);
// Add the export symbol definition for shared library objects.
- if(const char* exportMacro = gt->GetExportMacro())
+ if(const char* exportMacro = target->GetExportMacro())
{
targetOptions.AddDefine(exportMacro);
}
// The intermediate directory name consists of a directory for the
// target and a subdirectory for the configuration name.
- std::string intermediateDir = this->GetTargetDirectory(gt);
+ std::string intermediateDir = this->GetTargetDirectory(target);
intermediateDir += "/";
intermediateDir += configName;
- if (target.GetType() < cmState::UTILITY)
+ if (target->Target->GetType() < cmState::UTILITY)
{
std::string const& outDir =
- target.GetType() == cmState::OBJECT_LIBRARY?
- intermediateDir : gt->GetDirectory(configName);
+ target->Target->GetType() == cmState::OBJECT_LIBRARY?
+ intermediateDir : target->GetDirectory(configName);
fout << "\t\t\tOutputDirectory=\""
<< this->ConvertToXMLOutputPathSingle(outDir.c_str()) << "\"\n";
}
@@ -807,7 +802,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
if (this->FortranProject)
{
// Intel Fortran >= 15.0 uses TargetName property.
- std::string targetNameFull = gt->GetFullName(configName);
+ std::string targetNameFull = target->GetFullName(configName);
std::string targetName =
cmSystemTools::GetFilenameWithoutLastExtension(targetNameFull);
std::string targetExt =
@@ -842,7 +837,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
if(this->FortranProject)
{
const char* target_mod_dir =
- target.GetProperty("Fortran_MODULE_DIRECTORY");
+ target->Target->GetProperty("Fortran_MODULE_DIRECTORY");
std::string modDir;
if(target_mod_dir)
{
@@ -861,7 +856,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
targetOptions.OutputAdditionalOptions(fout, "\t\t\t\t", "\n");
fout << "\t\t\t\tAdditionalIncludeDirectories=\"";
std::vector<std::string> includes;
- this->GetIncludeDirectories(includes, gt, "C", configName);
+ this->GetIncludeDirectories(includes, target, "C", configName);
std::vector<std::string>::iterator i = includes.begin();
for(;i != includes.end(); ++i)
{
@@ -882,10 +877,10 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
targetOptions.OutputFlagMap(fout, "\t\t\t\t");
targetOptions.OutputPreprocessorDefinitions(fout, "\t\t\t\t", "\n", "CXX");
fout << "\t\t\t\tObjectFile=\"$(IntDir)\\\"\n";
- if(target.GetType() <= cmState::OBJECT_LIBRARY)
+ if(target->Target->GetType() <= cmState::OBJECT_LIBRARY)
{
// Specify the compiler program database file if configured.
- std::string pdb = gt->GetCompilePDBPath(configName);
+ std::string pdb = target->GetCompilePDBPath(configName);
if(!pdb.empty())
{
fout << "\t\t\t\tProgramDataBaseFileName=\""
@@ -989,7 +984,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
"\t\t\t\tName=\"" << manifestTool << "\"";
std::vector<cmSourceFile const*> manifest_srcs;
- gt->GetManifests(manifest_srcs, configName);
+ target->GetManifests(manifest_srcs, configName);
if (!manifest_srcs.empty())
{
fout << "\n\t\t\t\tAdditionalManifestFiles=\"";
@@ -1004,7 +999,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
// Check if we need the FAT32 workaround.
// Check the filesystem type where the target will be written.
- if (cmLVS6G_IsFAT(gt->GetDirectory(configName).c_str()))
+ if (cmLVS6G_IsFAT(target->GetDirectory(configName).c_str()))
{
// Add a flag telling the manifest tool to use a workaround
// for FAT32 file systems, which can cause an empty manifest
@@ -1038,28 +1033,28 @@ cmLocalVisualStudio7Generator
}
void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
- const std::string& configName, cmTarget &target,
+ const std::string& configName, cmGeneratorTarget* target,
const Options& targetOptions)
{
cmGlobalVisualStudio7Generator* gg =
static_cast<cmGlobalVisualStudio7Generator*>(this->GlobalGenerator);
std::string temp;
std::string extraLinkOptions;
- if(target.GetType() == cmState::EXECUTABLE)
+ if(target->GetType() == cmState::EXECUTABLE)
{
extraLinkOptions =
this->Makefile->GetRequiredDefinition("CMAKE_EXE_LINKER_FLAGS")
+ std::string(" ")
+ GetBuildTypeLinkerFlags("CMAKE_EXE_LINKER_FLAGS", configName);
}
- if(target.GetType() == cmState::SHARED_LIBRARY)
+ if(target->GetType() == cmState::SHARED_LIBRARY)
{
extraLinkOptions =
this->Makefile->GetRequiredDefinition("CMAKE_SHARED_LINKER_FLAGS")
+ std::string(" ")
+ GetBuildTypeLinkerFlags("CMAKE_SHARED_LINKER_FLAGS", configName);
}
- if(target.GetType() == cmState::MODULE_LIBRARY)
+ if(target->GetType() == cmState::MODULE_LIBRARY)
{
extraLinkOptions =
this->Makefile->GetRequiredDefinition("CMAKE_MODULE_LINKER_FLAGS")
@@ -1067,7 +1062,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
+ GetBuildTypeLinkerFlags("CMAKE_MODULE_LINKER_FLAGS", configName);
}
- const char* targetLinkFlags = target.GetProperty("LINK_FLAGS");
+ const char* targetLinkFlags = target->GetProperty("LINK_FLAGS");
if(targetLinkFlags)
{
extraLinkOptions += " ";
@@ -1076,7 +1071,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
std::string configTypeUpper = cmSystemTools::UpperCase(configName);
std::string linkFlagsConfig = "LINK_FLAGS_";
linkFlagsConfig += configTypeUpper;
- targetLinkFlags = target.GetProperty(linkFlagsConfig.c_str());
+ targetLinkFlags = target->GetProperty(linkFlagsConfig.c_str());
if(targetLinkFlags)
{
extraLinkOptions += " ";
@@ -1096,28 +1091,26 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
this->ConvertToOutputFormat(this->ModuleDefinitionFile, SHELL);
linkOptions.AddFlag("ModuleDefinitionFile", defFile.c_str());
}
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
- if (target.GetType() == cmState::SHARED_LIBRARY &&
+ if (target->GetType() == cmState::SHARED_LIBRARY &&
this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS"))
{
- if (target.GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
+ if (target->GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
{
linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def");
}
}
- switch(target.GetType())
+ switch(target->GetType())
{
case cmState::UNKNOWN_LIBRARY:
break;
case cmState::OBJECT_LIBRARY:
{
- std::string libpath = this->GetTargetDirectory(gt);
+ std::string libpath = this->GetTargetDirectory(target);
libpath += "/";
libpath += configName;
libpath += "/";
- libpath += target.GetName();
+ libpath += target->GetName();
libpath += ".lib";
const char* tool =
this->FortranProject? "VFLibrarianTool":"VCLibrarianTool";
@@ -1129,8 +1122,8 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
}
case cmState::STATIC_LIBRARY:
{
- std::string targetNameFull = gt->GetFullName(configName);
- std::string libpath = gt->GetDirectory(configName);
+ std::string targetNameFull = target->GetFullName(configName);
+ std::string libpath = target->GetDirectory(configName);
libpath += "/";
libpath += targetNameFull;
const char* tool = "VCLibrarianTool";
@@ -1145,14 +1138,14 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
|| this->FortranProject)
{
std::ostringstream libdeps;
- this->Internal->OutputObjects(libdeps, &target);
+ this->Internal->OutputObjects(libdeps, target);
if(!libdeps.str().empty())
{
fout << "\t\t\t\tAdditionalDependencies=\"" << libdeps.str() << "\"\n";
}
}
std::string libflags;
- this->GetStaticLibraryFlags(libflags, configTypeUpper, gt);
+ this->GetStaticLibraryFlags(libflags, configTypeUpper, target);
if(!libflags.empty())
{
fout << "\t\t\t\tAdditionalOptions=\"" << libflags << "\"\n";
@@ -1169,11 +1162,11 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
std::string targetNameFull;
std::string targetNameImport;
std::string targetNamePDB;
- gt->GetLibraryNames(targetName, targetNameSO, targetNameFull,
+ target->GetLibraryNames(targetName, targetNameSO, targetNameFull,
targetNameImport, targetNamePDB, configName);
// Compute the link library and directory information.
- cmComputeLinkInformation* pcli = gt->GetLinkInformation(configName);
+ cmComputeLinkInformation* pcli = target->GetLinkInformation(configName);
if(!pcli)
{
return;
@@ -1205,22 +1198,22 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
if(this->GetVersion() < cmGlobalVisualStudioGenerator::VS8
|| this->FortranProject)
{
- this->Internal->OutputObjects(fout, &target, " ");
+ this->Internal->OutputObjects(fout, target, " ");
}
fout << " ";
this->Internal->OutputLibraries(fout, cli.GetItems());
fout << "\"\n";
- temp = gt->GetDirectory(configName);
+ temp = target->GetDirectory(configName);
temp += "/";
temp += targetNameFull;
fout << "\t\t\t\tOutputFile=\""
<< this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n";
- this->WriteTargetVersionAttribute(fout, gt);
+ this->WriteTargetVersionAttribute(fout, target);
linkOptions.OutputFlagMap(fout, "\t\t\t\t");
fout << "\t\t\t\tAdditionalLibraryDirectories=\"";
this->OutputLibraryDirectories(fout, cli.GetDirectories());
fout << "\"\n";
- temp = gt->GetPDBDirectory(configName);
+ temp = target->GetPDBDirectory(configName);
temp += "/";
temp += targetNamePDB;
fout << "\t\t\t\tProgramDatabaseFile=\"" <<
@@ -1248,7 +1241,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
{
fout << "\t\t\t\tStackReserveSize=\"" << stackVal << "\"\n";
}
- temp = gt->GetDirectory(configName, true);
+ temp = target->GetDirectory(configName, true);
temp += "/";
temp += targetNameImport;
fout << "\t\t\t\tImportLibrary=\""
@@ -1266,11 +1259,11 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
std::string targetNameFull;
std::string targetNameImport;
std::string targetNamePDB;
- gt->GetExecutableNames(targetName, targetNameFull,
+ target->GetExecutableNames(targetName, targetNameFull,
targetNameImport, targetNamePDB, configName);
// Compute the link library and directory information.
- cmComputeLinkInformation* pcli = gt->GetLinkInformation(configName);
+ cmComputeLinkInformation* pcli = target->GetLinkInformation(configName);
if(!pcli)
{
return;
@@ -1278,7 +1271,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
cmComputeLinkInformation& cli = *pcli;
std::string linkLanguage = cli.GetLinkLanguage();
- bool isWin32Executable = target.GetPropertyAsBool("WIN32_EXECUTABLE");
+ bool isWin32Executable = target->GetPropertyAsBool("WIN32_EXECUTABLE");
// Compute the variable name to lookup standard libraries for this
// language.
@@ -1304,23 +1297,23 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
if(this->GetVersion() < cmGlobalVisualStudioGenerator::VS8
|| this->FortranProject)
{
- this->Internal->OutputObjects(fout, &target, " ");
+ this->Internal->OutputObjects(fout, target, " ");
}
fout << " ";
this->Internal->OutputLibraries(fout, cli.GetItems());
fout << "\"\n";
- temp = gt->GetDirectory(configName);
+ temp = target->GetDirectory(configName);
temp += "/";
temp += targetNameFull;
fout << "\t\t\t\tOutputFile=\""
<< this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n";
- this->WriteTargetVersionAttribute(fout, gt);
+ this->WriteTargetVersionAttribute(fout, target);
linkOptions.OutputFlagMap(fout, "\t\t\t\t");
fout << "\t\t\t\tAdditionalLibraryDirectories=\"";
this->OutputLibraryDirectories(fout, cli.GetDirectories());
fout << "\"\n";
std::string path = this->ConvertToXMLOutputPathSingle(
- gt->GetPDBDirectory(configName).c_str());
+ target->GetPDBDirectory(configName).c_str());
fout << "\t\t\t\tProgramDatabaseFile=\""
<< path << "/" << targetNamePDB
<< "\"\n";
@@ -1367,7 +1360,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
{
fout << "\t\t\t\tStackReserveSize=\"" << stackVal << "\"";
}
- temp = gt->GetDirectory(configName, true);
+ temp = target->GetDirectory(configName, true);
temp += "/";
temp += targetNameImport;
fout << "\t\t\t\tImportLibrary=\""
@@ -1418,13 +1411,11 @@ cmLocalVisualStudio7GeneratorInternals
//----------------------------------------------------------------------------
void
cmLocalVisualStudio7GeneratorInternals
-::OutputObjects(std::ostream& fout, cmTarget* t, const char* isep)
+::OutputObjects(std::ostream& fout, cmGeneratorTarget* gt, const char* isep)
{
// VS < 8 does not support per-config source locations so we
// list object library content on the link line instead.
cmLocalVisualStudio7Generator* lg = this->LocalGenerator;
- cmGeneratorTarget* gt =
- lg->GetGlobalGenerator()->GetGeneratorTarget(t);
std::vector<std::string> objs;
gt->UseObjectLibraries(objs, "");
const char* sep = isep? isep : "";
@@ -1481,7 +1472,7 @@ cmLocalVisualStudio7Generator
void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
const std::string& libName,
- cmTarget &target)
+ cmGeneratorTarget* target)
{
std::vector<std::string> configs;
this->Makefile->GetConfigurations(configs);
@@ -1489,13 +1480,10 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
// We may be modifying the source groups temporarily, so make a copy.
std::vector<cmSourceGroup> sourceGroups = this->Makefile->GetSourceGroups();
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
-
// get the classes from the source lists then add them to the groups
this->ModuleDefinitionFile = "";
std::vector<cmSourceFile*> classes;
- if (!gt->GetConfigCommonSourceFiles(classes))
+ if (!target->GetConfigCommonSourceFiles(classes))
{
return;
}
@@ -1538,7 +1526,7 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
// VS >= 8 support per-config source locations so we
// list object library content as external objects.
std::vector<std::string> objs;
- gt->UseObjectLibraries(objs, "");
+ target->UseObjectLibraries(objs, "");
if(!objs.empty())
{
// TODO: Separate sub-filter for each object library used?
@@ -1573,7 +1561,7 @@ class cmLocalVisualStudio7GeneratorFCInfo
{
public:
cmLocalVisualStudio7GeneratorFCInfo(cmLocalVisualStudio7Generator* lg,
- cmTarget& target,
+ cmGeneratorTarget* target,
cmSourceFile const& sf,
std::vector<std::string> const& configs);
std::map<std::string, cmLVS7GFileConfig> FileConfigMap;
@@ -1581,12 +1569,10 @@ public:
cmLocalVisualStudio7GeneratorFCInfo
::cmLocalVisualStudio7GeneratorFCInfo(cmLocalVisualStudio7Generator* lg,
- cmTarget& target,
+ cmGeneratorTarget* gt,
cmSourceFile const& sf,
std::vector<std::string> const& configs)
{
- cmGeneratorTarget* gt =
- lg->GetGlobalGenerator()->GetGeneratorTarget(&target);
std::string objectName;
if(gt->HasExplicitObjectName(&sf))
{
@@ -1703,10 +1689,10 @@ cmLocalVisualStudio7GeneratorFCInfo
//----------------------------------------------------------------------------
std::string
cmLocalVisualStudio7Generator
-::ComputeLongestObjectDirectory(cmTarget& target) const
+::ComputeLongestObjectDirectory(cmGeneratorTarget const* target) const
{
std::vector<std::string> configs;
- target.GetMakefile()->GetConfigurations(configs);
+ target->Target->GetMakefile()->GetConfigurations(configs);
// Compute the maximum length configuration name.
std::string config_max;
@@ -1725,9 +1711,7 @@ cmLocalVisualStudio7Generator
std::string dir_max;
dir_max += this->GetCurrentBinaryDirectory();
dir_max += "/";
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
- dir_max += this->GetTargetDirectory(gt);
+ dir_max += this->GetTargetDirectory(target);
dir_max += "/";
dir_max += config_max;
dir_max += "/";
@@ -1735,7 +1719,7 @@ cmLocalVisualStudio7Generator
}
bool cmLocalVisualStudio7Generator
-::WriteGroup(const cmSourceGroup *sg, cmTarget& target,
+::WriteGroup(const cmSourceGroup *sg, cmGeneratorTarget* target,
std::ostream &fout, const std::string& libName,
std::vector<std::string> const& configs)
{
@@ -1770,15 +1754,14 @@ bool cmLocalVisualStudio7Generator
}
// Loop through each source in the source group.
- std::string objectName;
for(std::vector<const cmSourceFile *>::const_iterator sf =
sourceFiles.begin(); sf != sourceFiles.end(); ++sf)
{
std::string source = (*sf)->GetFullPath();
FCInfo fcinfo(this, target, *(*sf), configs);
- if (source != libName || target.GetType() == cmState::UTILITY ||
- target.GetType() == cmState::GLOBAL_TARGET )
+ if (source != libName || target->GetType() == cmState::UTILITY ||
+ target->GetType() == cmState::GLOBAL_TARGET )
{
fout << "\t\t\t<File\n";
std::string d = this->ConvertToXMLOutputPathSingle(source.c_str());
@@ -2025,10 +2008,10 @@ void cmLocalVisualStudio7Generator::WriteVCProjEndGroup(std::ostream& fout)
void cmLocalVisualStudio7Generator
::OutputTargetRules(std::ostream& fout,
const std::string& configName,
- cmTarget &target,
+ cmGeneratorTarget *target,
const std::string& /*libName*/)
{
- if (target.GetType() > cmState::GLOBAL_TARGET)
+ if (target->GetType() > cmState::GLOBAL_TARGET)
{
return;
}
@@ -2038,36 +2021,35 @@ void cmLocalVisualStudio7Generator
const char* tool =
this->FortranProject? "VFPreBuildEventTool":"VCPreBuildEventTool";
event.Start(tool);
- event.Write(target.GetPreBuildCommands());
+ event.Write(target->Target->GetPreBuildCommands());
event.Finish();
// Add pre-link event.
tool = this->FortranProject? "VFPreLinkEventTool":"VCPreLinkEventTool";
event.Start(tool);
bool addedPrelink = false;
- if (target.GetType() == cmState::SHARED_LIBRARY &&
+ if (target->GetType() == cmState::SHARED_LIBRARY &&
this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS"))
{
- if (target.GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
+ if (target->GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
{
addedPrelink = true;
std::vector<cmCustomCommand> commands =
- target.GetPreLinkCommands();
+ target->Target->GetPreLinkCommands();
cmGlobalVisualStudioGenerator* gg
= static_cast<cmGlobalVisualStudioGenerator*>(this->GlobalGenerator);
- cmGeneratorTarget* gt =
- this->GlobalGenerator->GetGeneratorTarget(&target);
gg->AddSymbolExportCommand(
- gt, commands, configName);
+ target, commands, configName);
event.Write(commands);
}
}
if (!addedPrelink)
{
- event.Write(target.GetPreLinkCommands());
+ event.Write(target->Target->GetPreLinkCommands());
}
cmsys::auto_ptr<cmCustomCommand> pcc(
- this->MaybeCreateImplibDir(target, configName, this->FortranProject));
+ this->MaybeCreateImplibDir(target,
+ configName, this->FortranProject));
if(pcc.get())
{
event.Write(*pcc);
@@ -2077,18 +2059,18 @@ void cmLocalVisualStudio7Generator
// Add post-build event.
tool = this->FortranProject? "VFPostBuildEventTool":"VCPostBuildEventTool";
event.Start(tool);
- event.Write(target.GetPostBuildCommands());
+ event.Write(target->Target->GetPostBuildCommands());
event.Finish();
}
void cmLocalVisualStudio7Generator::WriteProjectSCC(std::ostream& fout,
- cmTarget& target)
+ cmGeneratorTarget* target)
{
// if we have all the required Source code control tags
// then add that to the project
- const char* vsProjectname = target.GetProperty("VS_SCC_PROJECTNAME");
- const char* vsLocalpath = target.GetProperty("VS_SCC_LOCALPATH");
- const char* vsProvider = target.GetProperty("VS_SCC_PROVIDER");
+ const char* vsProjectname = target->GetProperty("VS_SCC_PROJECTNAME");
+ const char* vsLocalpath = target->GetProperty("VS_SCC_LOCALPATH");
+ const char* vsProvider = target->GetProperty("VS_SCC_PROVIDER");
if(vsProvider && vsLocalpath && vsProjectname)
{
@@ -2096,7 +2078,7 @@ void cmLocalVisualStudio7Generator::WriteProjectSCC(std::ostream& fout,
<< "\tSccLocalPath=\"" << vsLocalpath << "\"\n"
<< "\tSccProvider=\"" << vsProvider << "\"\n";
- const char* vsAuxPath = target.GetProperty("VS_SCC_AUXPATH");
+ const char* vsAuxPath = target->GetProperty("VS_SCC_AUXPATH");
if(vsAuxPath)
{
fout << "\tSccAuxPath=\"" << vsAuxPath << "\"\n";
@@ -2108,7 +2090,7 @@ void
cmLocalVisualStudio7Generator
::WriteProjectStartFortran(std::ostream& fout,
const std::string& libName,
- cmTarget & target)
+ cmGeneratorTarget *target)
{
cmGlobalVisualStudio7Generator* gg =
@@ -2118,13 +2100,13 @@ cmLocalVisualStudio7Generator
<< "<VisualStudioProject\n"
<< "\tProjectCreator=\"Intel Fortran\"\n"
<< "\tVersion=\"" << gg->GetIntelProjectVersion() << "\"\n";
- const char* keyword = target.GetProperty("VS_KEYWORD");
+ const char* keyword = target->GetProperty("VS_KEYWORD");
if(!keyword)
{
keyword = "Console Application";
}
const char* projectType = 0;
- switch(target.GetType())
+ switch(target->GetType())
{
case cmState::STATIC_LIBRARY:
projectType = "typeStaticLibrary";
@@ -2169,7 +2151,7 @@ cmLocalVisualStudio7Generator
void
cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
const std::string& libName,
- cmTarget & target,
+ cmGeneratorTarget *target,
std::vector<cmSourceGroup> &)
{
if(this->FortranProject)
@@ -2193,12 +2175,12 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
{
fout << "\tVersion=\"" << (gg->GetVersion()/10) << ".00\"\n";
}
- const char* projLabel = target.GetProperty("PROJECT_LABEL");
+ const char* projLabel = target->GetProperty("PROJECT_LABEL");
if(!projLabel)
{
projLabel = libName.c_str();
}
- const char* keyword = target.GetProperty("VS_KEYWORD");
+ const char* keyword = target->GetProperty("VS_KEYWORD");
if(!keyword)
{
keyword = "Win32Proj";
@@ -2210,7 +2192,7 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
}
this->WriteProjectSCC(fout, target);
if(const char* targetFrameworkVersion =
- target.GetProperty("VS_DOTNET_TARGET_FRAMEWORK_VERSION"))
+ target->GetProperty("VS_DOTNET_TARGET_FRAMEWORK_VERSION"))
{
fout << "\tTargetFrameworkVersion=\"" << targetFrameworkVersion << "\"\n";
}
@@ -2231,12 +2213,13 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
}
-void cmLocalVisualStudio7Generator::WriteVCProjFooter(std::ostream& fout,
- cmTarget &target)
+void cmLocalVisualStudio7Generator::WriteVCProjFooter(
+ std::ostream& fout,
+ cmGeneratorTarget *target)
{
fout << "\t<Globals>\n";
- cmPropertyMap const& props = target.GetProperties();
+ cmPropertyMap const& props = target->Target->GetProperties();
for(cmPropertyMap::const_iterator i = props.begin(); i != props.end(); ++i)
{
if(i->first.find("VS_GLOBAL_") == 0)
diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h
index 16cf004..7bb9cc6 100644
--- a/Source/cmLocalVisualStudio7Generator.h
+++ b/Source/cmLocalVisualStudio7Generator.h
@@ -15,7 +15,6 @@
#include "cmLocalVisualStudioGenerator.h"
#include "cmVisualStudioGeneratorOptions.h"
-class cmTarget;
class cmSourceFile;
class cmCustomCommand;
class cmSourceGroup;
@@ -57,13 +56,15 @@ public:
std::string GetTargetDirectory(cmGeneratorTarget const* target) const;
cmSourceFile* CreateVCProjBuildRule();
void WriteStampFiles();
- virtual std::string ComputeLongestObjectDirectory(cmTarget&) const;
+ virtual std::string
+ ComputeLongestObjectDirectory(cmGeneratorTarget const*) const;
virtual void ReadAndStoreExternalGUID(const std::string& name,
const char* path);
virtual void AddCMakeListsRules();
protected:
- void CreateSingleVCProj(const std::string& lname, cmTarget &tgt);
+ void CreateSingleVCProj(const std::string& lname,
+ cmGeneratorTarget *tgt);
private:
typedef cmVisualStudioGeneratorOptions Options;
typedef cmLocalVisualStudio7GeneratorFCInfo FCInfo;
@@ -72,30 +73,33 @@ private:
void FixGlobalTargets();
void WriteProjectFiles();
void WriteVCProjHeader(std::ostream& fout, const std::string& libName,
- cmTarget &tgt, std::vector<cmSourceGroup> &sgs);
- void WriteVCProjFooter(std::ostream& fout, cmTarget &target);
+ cmGeneratorTarget* tgt,
+ std::vector<cmSourceGroup> &sgs);
+ void WriteVCProjFooter(std::ostream& fout, cmGeneratorTarget* target);
void WriteVCProjFile(std::ostream& fout, const std::string& libName,
- cmTarget &tgt);
+ cmGeneratorTarget* tgt);
void WriteConfigurations(std::ostream& fout,
std::vector<std::string> const& configs,
- const std::string& libName, cmTarget &tgt);
+ const std::string& libName, cmGeneratorTarget* tgt);
void WriteConfiguration(std::ostream& fout,
const std::string& configName,
- const std::string& libName, cmTarget &tgt);
+ const std::string& libName, cmGeneratorTarget* tgt);
std::string EscapeForXML(const std::string& s);
std::string ConvertToXMLOutputPath(const char* path);
std::string ConvertToXMLOutputPathSingle(const char* path);
void OutputTargetRules(std::ostream& fout, const std::string& configName,
- cmTarget &target, const std::string& libName);
+ cmGeneratorTarget* target,
+ const std::string& libName);
void OutputBuildTool(std::ostream& fout, const std::string& configName,
- cmTarget& t, const Options& targetOptions);
+ cmGeneratorTarget* t, const Options& targetOptions);
void OutputLibraryDirectories(std::ostream& fout,
std::vector<std::string> const& dirs);
- void WriteProjectSCC(std::ostream& fout, cmTarget& target);
+ void WriteProjectSCC(std::ostream& fout, cmGeneratorTarget *target);
void WriteProjectStart(std::ostream& fout, const std::string& libName,
- cmTarget &tgt, std::vector<cmSourceGroup> &sgs);
+ cmGeneratorTarget* tgt,
+ std::vector<cmSourceGroup> &sgs);
void WriteProjectStartFortran(std::ostream& fout, const std::string& libName,
- cmTarget &tgt);
+ cmGeneratorTarget* tgt);
void WriteVCProjBeginGroup(std::ostream& fout,
const char* group,
const char* filter);
@@ -110,7 +114,7 @@ private:
cmGeneratorTarget* gt);
bool WriteGroup(const cmSourceGroup *sg,
- cmTarget& target, std::ostream &fout,
+ cmGeneratorTarget* target, std::ostream &fout,
const std::string& libName,
std::vector<std::string> const& configs);
diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx
index 2f44fb7..561f9a1 100644
--- a/Source/cmLocalVisualStudioGenerator.cxx
+++ b/Source/cmLocalVisualStudioGenerator.cxx
@@ -43,7 +43,7 @@ void cmLocalVisualStudioGenerator::ComputeObjectFilenames(
std::map<cmSourceFile const*, std::string>& mapping,
cmGeneratorTarget const* gt)
{
- std::string dir_max = this->ComputeLongestObjectDirectory(*gt->Target);
+ std::string dir_max = this->ComputeLongestObjectDirectory(gt);
// Count the number of object files with each name. Note that
// windows file names are not case sensitive.
@@ -80,7 +80,7 @@ void cmLocalVisualStudioGenerator::ComputeObjectFilenames(
//----------------------------------------------------------------------------
cmsys::auto_ptr<cmCustomCommand>
-cmLocalVisualStudioGenerator::MaybeCreateImplibDir(cmTarget& target,
+cmLocalVisualStudioGenerator::MaybeCreateImplibDir(cmGeneratorTarget* target,
const std::string& config,
bool isFortran)
{
@@ -89,13 +89,11 @@ cmLocalVisualStudioGenerator::MaybeCreateImplibDir(cmTarget& target,
// If an executable exports symbols then VS wants to create an
// import library but forgets to create the output directory.
// The Intel Fortran plugin always forgets to the directory.
- if(target.GetType() != cmState::EXECUTABLE &&
- !(isFortran && target.GetType() == cmState::SHARED_LIBRARY))
+ if(target->GetType() != cmState::EXECUTABLE &&
+ !(isFortran && target->GetType() == cmState::SHARED_LIBRARY))
{ return pcc; }
- cmGeneratorTarget* gt =
- this->GetGlobalGenerator()->GetGeneratorTarget(&target);
- std::string outDir = gt->GetDirectory(config, false);
- std::string impDir = gt->GetDirectory(config, true);
+ std::string outDir = target->GetDirectory(config, false);
+ std::string impDir = target->GetDirectory(config, true);
if(impDir == outDir) { return pcc; }
// Add a pre-build event to create the directory.
diff --git a/Source/cmLocalVisualStudioGenerator.h b/Source/cmLocalVisualStudioGenerator.h
index 071bfb3..f95eefa 100644
--- a/Source/cmLocalVisualStudioGenerator.h
+++ b/Source/cmLocalVisualStudioGenerator.h
@@ -44,7 +44,8 @@ public:
cmGlobalVisualStudioGenerator::VSVersion GetVersion() const;
- virtual std::string ComputeLongestObjectDirectory(cmTarget&) const = 0;
+ virtual std::string
+ ComputeLongestObjectDirectory(cmGeneratorTarget const*) const = 0;
virtual void AddCMakeListsRules() = 0;
@@ -58,7 +59,8 @@ protected:
/** Construct a custom command to make exe import lib dir. */
cmsys::auto_ptr<cmCustomCommand>
- MaybeCreateImplibDir(cmTarget& target, const std::string& config,
+ MaybeCreateImplibDir(cmGeneratorTarget *target,
+ const std::string& config,
bool isFortran);
};
diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx
index 020e64c..f56037f 100644
--- a/Source/cmMakefileExecutableTargetGenerator.cxx
+++ b/Source/cmMakefileExecutableTargetGenerator.cxx
@@ -16,7 +16,6 @@
#include "cmLocalUnixMakefileGenerator3.h"
#include "cmMakefile.h"
#include "cmSourceFile.h"
-#include "cmTarget.h"
#include "cmake.h"
//----------------------------------------------------------------------------
@@ -279,11 +278,13 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
if(!relink)
{
this->LocalGenerator
- ->AppendCustomCommands(commands, this->Target->GetPreBuildCommands(),
- this->GeneratorTarget);
+ ->AppendCustomCommands(commands,
+ this->GeneratorTarget->Target->GetPreBuildCommands(),
+ this->GeneratorTarget);
this->LocalGenerator
- ->AppendCustomCommands(commands, this->Target->GetPreLinkCommands(),
- this->GeneratorTarget);
+ ->AppendCustomCommands(commands,
+ this->GeneratorTarget->Target->GetPreLinkCommands(),
+ this->GeneratorTarget);
}
// Determine whether a link script will be used.
@@ -448,8 +449,9 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
if(!relink)
{
this->LocalGenerator->
- AppendCustomCommands(commands, this->Target->GetPostBuildCommands(),
- this->GeneratorTarget);
+ AppendCustomCommands(commands,
+ this->GeneratorTarget->Target->GetPostBuildCommands(),
+ this->GeneratorTarget);
}
// Write the build rule.
diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx
index df2a8c9..0a65641 100644
--- a/Source/cmMakefileLibraryTargetGenerator.cxx
+++ b/Source/cmMakefileLibraryTargetGenerator.cxx
@@ -16,7 +16,6 @@
#include "cmLocalUnixMakefileGenerator3.h"
#include "cmMakefile.h"
#include "cmSourceFile.h"
-#include "cmTarget.h"
#include "cmake.h"
#include "cmAlgorithms.h"
@@ -114,7 +113,8 @@ void cmMakefileLibraryTargetGenerator::WriteObjectLibraryRules()
// Add post-build rules.
this->LocalGenerator->
- AppendCustomCommands(commands, this->Target->GetPostBuildCommands(),
+ AppendCustomCommands(commands,
+ this->GeneratorTarget->Target->GetPostBuildCommands(),
this->GeneratorTarget);
// Depend on the object files.
@@ -457,11 +457,13 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
if(!relink)
{
this->LocalGenerator
- ->AppendCustomCommands(commands, this->Target->GetPreBuildCommands(),
- this->GeneratorTarget);
+ ->AppendCustomCommands(commands,
+ this->GeneratorTarget->Target->GetPreBuildCommands(),
+ this->GeneratorTarget);
this->LocalGenerator
- ->AppendCustomCommands(commands, this->Target->GetPreLinkCommands(),
- this->GeneratorTarget);
+ ->AppendCustomCommands(commands,
+ this->GeneratorTarget->Target->GetPreLinkCommands(),
+ this->GeneratorTarget);
}
// Determine whether a link script will be used.
@@ -811,8 +813,9 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
if(!relink)
{
this->LocalGenerator->
- AppendCustomCommands(commands, this->Target->GetPostBuildCommands(),
- this->GeneratorTarget);
+ AppendCustomCommands(commands,
+ this->GeneratorTarget->Target->GetPostBuildCommands(),
+ this->GeneratorTarget);
}
// Compute the list of outputs.
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index b7970fd..7acccb3 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -18,7 +18,6 @@
#include "cmLocalUnixMakefileGenerator3.h"
#include "cmMakefile.h"
#include "cmSourceFile.h"
-#include "cmTarget.h"
#include "cmake.h"
#include "cmState.h"
#include "cmComputeLinkInformation.h"
@@ -432,7 +431,7 @@ void cmMakefileTargetGenerator
std::string srcFullPath =
this->Convert(source.GetFullPath(), cmLocalGenerator::FULL);
this->LocalGenerator->
- AddImplicitDepends(*this->Target, lang,
+ AddImplicitDepends(this->GeneratorTarget, lang,
objFullPath.c_str(),
srcFullPath.c_str());
}
@@ -1241,7 +1240,7 @@ void cmMakefileTargetGenerator
std::string srcFullPath =
this->Convert(idi->second, cmLocalGenerator::FULL);
this->LocalGenerator->
- AddImplicitDepends(*this->Target, idi->first,
+ AddImplicitDepends(this->GeneratorTarget, idi->first,
objFullPath.c_str(),
srcFullPath.c_str());
}
diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h
index e38c50b..38f40c0 100644
--- a/Source/cmMakefileTargetGenerator.h
+++ b/Source/cmMakefileTargetGenerator.h
@@ -24,7 +24,6 @@ class cmGeneratedFileStream;
class cmGlobalUnixMakefileGenerator3;
class cmLocalUnixMakefileGenerator3;
class cmMakefile;
-class cmTarget;
class cmSourceFile;
/** \class cmMakefileTargetGenerator
@@ -51,7 +50,6 @@ public:
std::string GetProgressFileNameFull()
{ return this->ProgressFileNameFull; }
- cmTarget* GetTarget() { return this->Target;}
cmGeneratorTarget* GetGeneratorTarget() { return this->GeneratorTarget;}
protected:
diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx
index 11601c5..d35c3ae 100644
--- a/Source/cmMakefileUtilityTargetGenerator.cxx
+++ b/Source/cmMakefileUtilityTargetGenerator.cxx
@@ -16,7 +16,6 @@
#include "cmLocalUnixMakefileGenerator3.h"
#include "cmMakefile.h"
#include "cmSourceFile.h"
-#include "cmTarget.h"
//----------------------------------------------------------------------------
cmMakefileUtilityTargetGenerator
@@ -68,19 +67,21 @@ void cmMakefileUtilityTargetGenerator::WriteRuleFiles()
// Utility targets store their rules in pre- and post-build commands.
this->LocalGenerator->AppendCustomDepends
- (depends, this->Target->GetPreBuildCommands());
+ (depends, this->GeneratorTarget->Target->GetPreBuildCommands());
this->LocalGenerator->AppendCustomDepends
- (depends, this->Target->GetPostBuildCommands());
+ (depends, this->GeneratorTarget->Target->GetPostBuildCommands());
this->LocalGenerator->AppendCustomCommands
- (commands, this->Target->GetPreBuildCommands(), this->GeneratorTarget);
+ (commands, this->GeneratorTarget->Target->GetPreBuildCommands(),
+ this->GeneratorTarget);
// Depend on all custom command outputs for sources
this->DriveCustomCommands(depends);
this->LocalGenerator->AppendCustomCommands
- (commands, this->Target->GetPostBuildCommands(), this->GeneratorTarget);
+ (commands, this->GeneratorTarget->Target->GetPostBuildCommands(),
+ this->GeneratorTarget);
// Add dependencies on targets that must be built first.
this->AppendTargetDepends(depends);
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index dafbda9..b533d37 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -399,7 +399,6 @@ static int calculateCommandLineLengthLimit(int linkRuleLength)
void cmNinjaNormalTargetGenerator::WriteLinkStatement()
{
- cmTarget& target = *this->GetTarget();
cmGeneratorTarget& gt = *this->GetGeneratorTarget();
const std::string cfgName = this->GetConfigName();
std::string targetOutput = ConvertToNinjaPath(
@@ -443,7 +442,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
// Write comments.
cmGlobalNinjaGenerator::WriteDivider(this->GetBuildFileStream());
- const cmState::TargetType targetType = target.GetType();
+ const cmState::TargetType targetType = gt.GetType();
this->GetBuildFileStream()
<< "# Link build statements for "
<< cmState::GetTargetTypeName(targetType)
@@ -490,13 +489,13 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
&genTarget,
useWatcomQuote);
if(this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")
- && target.GetType() == cmState::SHARED_LIBRARY)
+ && gt.GetType() == cmState::SHARED_LIBRARY)
{
- if(target.GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
+ if(gt.GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
{
std::string name_of_def_file
= gt.GetSupportDirectory();
- name_of_def_file += "/" + target.GetName();
+ name_of_def_file += "/" + gt.GetName();
name_of_def_file += ".def ";
vars["LINK_FLAGS"] += " /DEF:";
vars["LINK_FLAGS"] += this->GetLocalGenerator()
@@ -505,7 +504,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
}
}
- this->addPoolNinjaVariable("JOB_POOL_LINK", &target, vars);
+ this->addPoolNinjaVariable("JOB_POOL_LINK", &gt, vars);
this->AddModuleDefinitionFlag(vars["LINK_FLAGS"]);
vars["LINK_FLAGS"] = cmGlobalNinjaGenerator
@@ -599,9 +598,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
}
const std::vector<cmCustomCommand> *cmdLists[3] = {
- &target.GetPreBuildCommands(),
- &target.GetPreLinkCommands(),
- &target.GetPostBuildCommands()
+ &gt.Target->GetPreBuildCommands(),
+ &gt.Target->GetPreLinkCommands(),
+ &gt.Target->GetPostBuildCommands()
};
std::vector<std::string> preLinkCmdLines, postBuildCmdLines;
@@ -626,17 +625,17 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
}
// maybe create .def file from list of objects
- if (target.GetType() == cmState::SHARED_LIBRARY &&
+ if (gt.GetType() == cmState::SHARED_LIBRARY &&
this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS"))
{
- if(target.GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
+ if(gt.GetPropertyAsBool("WINDOWS_EXPORT_ALL_SYMBOLS"))
{
std::string cmakeCommand =
this->GetLocalGenerator()->ConvertToOutputFormat(
cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL);
std::string name_of_def_file
= gt.GetSupportDirectory();
- name_of_def_file += "/" + target.GetName();
+ name_of_def_file += "/" + gt.GetName();
name_of_def_file += ".def";
std::string cmd = cmakeCommand;
cmd += " -E __create_def ";
@@ -699,11 +698,11 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
const std::string rspfile =
std::string(cmake::GetCMakeFilesDirectoryPostSlash())
- + target.GetName() + ".rsp";
+ + gt.GetName() + ".rsp";
// Gather order-only dependencies.
cmNinjaDeps orderOnlyDeps;
- this->GetLocalGenerator()->AppendTargetDepends(this->GetTarget(),
+ this->GetLocalGenerator()->AppendTargetDepends(this->GetGeneratorTarget(),
orderOnlyDeps);
// Ninja should restat after linking if and only if there are byproducts.
@@ -772,8 +771,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
}
// Add aliases for the file name and the target name.
- globalGen.AddTargetAlias(this->TargetNameOut, &target);
- globalGen.AddTargetAlias(this->GetTargetName(), &target);
+ globalGen.AddTargetAlias(this->TargetNameOut, &gt);
+ globalGen.AddTargetAlias(this->GetTargetName(), &gt);
}
//----------------------------------------------------------------------------
@@ -781,7 +780,8 @@ void cmNinjaNormalTargetGenerator::WriteObjectLibStatement()
{
// Write a phony output that depends on all object files.
cmNinjaDeps outputs;
- this->GetLocalGenerator()->AppendTargetOutputs(this->GetTarget(), outputs);
+ this->GetLocalGenerator()->AppendTargetOutputs(this->GetGeneratorTarget(),
+ outputs);
cmNinjaDeps depends = this->GetObjects();
this->GetGlobalGenerator()->WritePhonyBuild(this->GetBuildFileStream(),
"Object library "
@@ -791,5 +791,5 @@ void cmNinjaNormalTargetGenerator::WriteObjectLibStatement()
// Add aliases for the target name.
this->GetGlobalGenerator()->AddTargetAlias(this->GetTargetName(),
- this->GetTarget());
+ this->GetGeneratorTarget());
}
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index b018005..dc2c7a6 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -486,7 +486,8 @@ cmNinjaTargetGenerator
si != customCommands.end(); ++si)
{
cmCustomCommand const* cc = (*si)->GetCustomCommand();
- this->GetLocalGenerator()->AddCustomCommandTarget(cc, this->GetTarget());
+ this->GetLocalGenerator()->AddCustomCommandTarget(cc,
+ this->GetGeneratorTarget());
// Record the custom commands for this target. The container is used
// in WriteObjectBuildStatement when called in a loop below.
this->CustomCommands.push_back(cc);
@@ -511,7 +512,8 @@ cmNinjaTargetGenerator
}
cmNinjaDeps orderOnlyDeps;
- this->GetLocalGenerator()->AppendTargetDepends(this->Target, orderOnlyDeps);
+ this->GetLocalGenerator()->AppendTargetDepends(this->GeneratorTarget,
+ orderOnlyDeps);
// Add order-only dependencies on custom command outputs.
for(std::vector<cmCustomCommand const*>::const_iterator
@@ -633,7 +635,8 @@ cmNinjaTargetGenerator
ConvertToNinjaPath(objectFileDir),
cmLocalGenerator::SHELL);
- this->addPoolNinjaVariable("JOB_POOL_COMPILE", this->GetTarget(), vars);
+ this->addPoolNinjaVariable("JOB_POOL_COMPILE",
+ this->GetGeneratorTarget(), vars);
this->SetMsvcTargetPdbVariable(vars);
@@ -782,7 +785,7 @@ cmNinjaTargetGenerator::MacOSXContentGeneratorType::operator()(
void cmNinjaTargetGenerator::addPoolNinjaVariable(
const std::string& pool_property,
- cmTarget* target,
+ cmGeneratorTarget* target,
cmNinjaVars& vars)
{
const char* pool = target->GetProperty(pool_property);
diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h
index 0267f63..e3ec423 100644
--- a/Source/cmNinjaTargetGenerator.h
+++ b/Source/cmNinjaTargetGenerator.h
@@ -53,9 +53,6 @@ protected:
cmGeneratedFileStream& GetBuildFileStream() const;
cmGeneratedFileStream& GetRulesFileStream() const;
- cmTarget* GetTarget() const
- { return this->Target; }
-
cmGeneratorTarget* GetGeneratorTarget() const
{ return this->GeneratorTarget; }
@@ -152,7 +149,7 @@ protected:
std::set<std::string> MacContentFolders;
void addPoolNinjaVariable(const std::string& pool_property,
- cmTarget* target,
+ cmGeneratorTarget* target,
cmNinjaVars& vars);
private:
diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx
index 5bbe268..b2a5334 100644
--- a/Source/cmNinjaUtilityTargetGenerator.cxx
+++ b/Source/cmNinjaUtilityTargetGenerator.cxx
@@ -16,7 +16,6 @@
#include "cmGlobalNinjaGenerator.h"
#include "cmMakefile.h"
#include "cmSourceFile.h"
-#include "cmTarget.h"
#include "cmCustomCommandGenerator.h"
cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator(
@@ -34,8 +33,8 @@ void cmNinjaUtilityTargetGenerator::Generate()
cmNinjaDeps deps, outputs, util_outputs(1, utilCommandName);
const std::vector<cmCustomCommand> *cmdLists[2] = {
- &this->GetTarget()->GetPreBuildCommands(),
- &this->GetTarget()->GetPostBuildCommands()
+ &this->GetGeneratorTarget()->Target->GetPreBuildCommands(),
+ &this->GetGeneratorTarget()->Target->GetPostBuildCommands()
};
bool uses_terminal = false;
@@ -66,7 +65,8 @@ void cmNinjaUtilityTargetGenerator::Generate()
{
cmCustomCommandGenerator ccg(*cc, this->GetConfigName(),
this->GetLocalGenerator());
- this->GetLocalGenerator()->AddCustomCommandTarget(cc, this->GetTarget());
+ this->GetLocalGenerator()->AddCustomCommandTarget(cc,
+ this->GetGeneratorTarget());
// Depend on all custom command outputs.
const std::vector<std::string>& ccOutputs = ccg.GetOutputs();
@@ -78,8 +78,10 @@ void cmNinjaUtilityTargetGenerator::Generate()
}
}
- this->GetLocalGenerator()->AppendTargetOutputs(this->GetTarget(), outputs);
- this->GetLocalGenerator()->AppendTargetDepends(this->GetTarget(), deps);
+ this->GetLocalGenerator()->AppendTargetOutputs(this->GetGeneratorTarget(),
+ outputs);
+ this->GetLocalGenerator()->AppendTargetDepends(this->GetGeneratorTarget(),
+ deps);
if (commands.empty()) {
this->GetGlobalGenerator()->WritePhonyBuild(this->GetBuildFileStream(),
@@ -140,5 +142,5 @@ void cmNinjaUtilityTargetGenerator::Generate()
}
this->GetGlobalGenerator()->AddTargetAlias(this->GetTargetName(),
- this->GetTarget());
+ this->GetGeneratorTarget());
}
diff --git a/Source/cmQtAutoGeneratorInitializer.cxx b/Source/cmQtAutoGeneratorInitializer.cxx
index 16b8942..225c03e 100644
--- a/Source/cmQtAutoGeneratorInitializer.cxx
+++ b/Source/cmQtAutoGeneratorInitializer.cxx
@@ -895,7 +895,7 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
commandLines, false, autogenComment.c_str());
cmGeneratorTarget* gt = new cmGeneratorTarget(autogenTarget, lg);
- lg->AddGeneratorTarget(autogenTarget, gt);
+ lg->AddGeneratorTarget(gt);
lg->GetGlobalGenerator()->AddGeneratorTarget(autogenTarget, gt);
// Set target folder
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index e8c05da..1cae94f 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -260,6 +260,10 @@ public:
return this->LinkLibrariesForVS6;}
#endif
+ struct StrictTargetComparison {
+ bool operator()(cmTarget const* t1, cmTarget const* t2) const;
+ };
+
private:
bool HandleLocationPropertyPolicy(cmMakefile* context) const;
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index f4c632d..9c9f5ab 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -13,7 +13,6 @@
#include "cmVisualStudio10TargetGenerator.h"
#include "cmGlobalVisualStudio10Generator.h"
#include "cmGeneratorTarget.h"
-#include "cmTarget.h"
#include "cmComputeLinkInformation.h"
#include "cmGeneratedFileStream.h"
#include "cmMakefile.h"
@@ -167,13 +166,12 @@ static std::string cmVS10EscapeComment(std::string comment)
}
cmVisualStudio10TargetGenerator::
-cmVisualStudio10TargetGenerator(cmTarget* target,
+cmVisualStudio10TargetGenerator(cmGeneratorTarget* target,
cmGlobalVisualStudio10Generator* gg)
{
this->GlobalGenerator = gg;
- this->Target = target;
- this->GeneratorTarget = gg->GetGeneratorTarget(target);
- this->Makefile = target->GetMakefile();
+ this->GeneratorTarget = target;
+ this->Makefile = target->Target->GetMakefile();
this->Makefile->GetConfigurations(this->Configurations);
this->LocalGenerator =
(cmLocalVisualStudio7Generator*)
@@ -275,8 +273,9 @@ void cmVisualStudio10TargetGenerator::Generate()
return;
}
// Tell the global generator the name of the project file
- this->Target->SetProperty("GENERATOR_FILE_NAME",this->Name.c_str());
- this->Target->SetProperty("GENERATOR_FILE_NAME_EXT",
+ this->GeneratorTarget->Target
+ ->SetProperty("GENERATOR_FILE_NAME",this->Name.c_str());
+ this->GeneratorTarget->Target->SetProperty("GENERATOR_FILE_NAME_EXT",
".vcxproj");
if(this->GeneratorTarget->GetType() <= cmState::OBJECT_LIBRARY)
{
@@ -732,7 +731,8 @@ void cmVisualStudio10TargetGenerator
cmGlobalVisualStudio10Generator* gg =
static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator);
const char* mfcFlag =
- this->Target->GetMakefile()->GetDefinition("CMAKE_MFC_FLAG");
+ this->GeneratorTarget->
+ Target->GetMakefile()->GetDefinition("CMAKE_MFC_FLAG");
std::string mfcFlagValue = mfcFlag ? mfcFlag : "0";
std::string useOfMfcValue = "false";
@@ -1462,7 +1462,8 @@ void cmVisualStudio10TargetGenerator::WriteSource(
}
else
{
- this->GlobalGenerator->PathTooLong(this->Target, sf, sourceRel);
+ this->GlobalGenerator->PathTooLong(this->GeneratorTarget,
+ sf, sourceRel);
}
}
this->ConvertToWindowsSlash(sourceFile);
@@ -1915,12 +1916,12 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
std::string baseFlagVar = "CMAKE_";
baseFlagVar += linkLanguage;
baseFlagVar += "_FLAGS";
- flags = this->
+ flags = this->GeneratorTarget->
Target->GetMakefile()->GetRequiredDefinition(baseFlagVar.c_str());
std::string flagVar = baseFlagVar + std::string("_") +
cmSystemTools::UpperCase(configName);
flags += " ";
- flags += this->
+ flags += this->GeneratorTarget->
Target->GetMakefile()->GetRequiredDefinition(flagVar.c_str());
}
// set the correct language
@@ -1936,7 +1937,8 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
linkLanguage, configName.c_str());
// Get preprocessor definitions for this directory.
- std::string defineFlags = this->Target->GetMakefile()->GetDefineFlags();
+ std::string defineFlags =
+ this->GeneratorTarget->Target->GetMakefile()->GetDefineFlags();
if(this->MSTools)
{
clOptions.FixExceptionHandlingDefault();
@@ -2440,11 +2442,11 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config)
linkFlagVarBase += linkType;
linkFlagVarBase += "_LINKER_FLAGS";
flags += " ";
- flags += this->
+ flags += this->GeneratorTarget->
Target->GetMakefile()->GetRequiredDefinition(linkFlagVarBase.c_str());
std::string linkFlagVar = linkFlagVarBase + "_" + CONFIG;
flags += " ";
- flags += this->
+ flags += this->GeneratorTarget->
Target->GetMakefile()->GetRequiredDefinition(linkFlagVar.c_str());
const char* targetLinkFlags =
this->GeneratorTarget->GetProperty("LINK_FLAGS");
@@ -2674,7 +2676,8 @@ cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const& config)
linkOptions.OutputFlagMap(*this->BuildFileStream, " ");
this->WriteString("</Link>\n", 2);
- if(!this->GlobalGenerator->NeedLinkLibraryDependencies(*this->Target))
+ if(!this->GlobalGenerator->NeedLinkLibraryDependencies(
+ this->GeneratorTarget))
{
this->WriteString("<ProjectReference>\n", 2);
this->WriteString(
@@ -2811,7 +2814,7 @@ cmVisualStudio10TargetGenerator::WriteEvents(std::string const& configName)
{
addedPrelink = true;
std::vector<cmCustomCommand> commands =
- this->Target->GetPreLinkCommands();
+ this->GeneratorTarget->Target->GetPreLinkCommands();
this->GlobalGenerator->AddSymbolExportCommand(
this->GeneratorTarget, commands, configName);
this->WriteEvent("PreLinkEvent", commands, configName);
@@ -2820,12 +2823,12 @@ cmVisualStudio10TargetGenerator::WriteEvents(std::string const& configName)
if (!addedPrelink)
{
this->WriteEvent("PreLinkEvent",
- this->Target->GetPreLinkCommands(), configName);
+ this->GeneratorTarget->Target->GetPreLinkCommands(), configName);
}
this->WriteEvent("PreBuildEvent",
- this->Target->GetPreBuildCommands(), configName);
+ this->GeneratorTarget->Target->GetPreBuildCommands(), configName);
this->WriteEvent("PostBuildEvent",
- this->Target->GetPostBuildCommands(), configName);
+ this->GeneratorTarget->Target->GetPostBuildCommands(), configName);
}
void cmVisualStudio10TargetGenerator::WriteEvent(
@@ -2875,7 +2878,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
for( OrderedTargetDependSet::const_iterator i = depends.begin();
i != depends.end(); ++i)
{
- cmTarget const* dt = (*i)->Target;
+ cmGeneratorTarget const* dt = *i;
if(dt->GetType() == cmState::INTERFACE_LIBRARY)
{
continue;
@@ -2883,12 +2886,12 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
// skip fortran targets as they can not be processed by MSBuild
// the only reference will be in the .sln file
if(static_cast<cmGlobalVisualStudioGenerator*>(this->GlobalGenerator)
- ->TargetIsFortranOnly(*dt))
+ ->TargetIsFortranOnly(dt))
{
continue;
}
this->WriteString("<ProjectReference Include=\"", 2);
- cmMakefile* mf = dt->GetMakefile();
+ cmLocalGenerator* lg = dt->GetLocalGenerator();
std::string name = dt->GetName();
std::string path;
const char* p = dt->GetProperty("EXTERNAL_MSPROJECT");
@@ -2898,7 +2901,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
}
else
{
- path = mf->GetCurrentBinaryDirectory();
+ path = lg->GetCurrentBinaryDirectory();
path += "/";
path += dt->GetName();
path += ".vcxproj";
diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h
index 15ed9f2..044e0dd 100644
--- a/Source/cmVisualStudio10TargetGenerator.h
+++ b/Source/cmVisualStudio10TargetGenerator.h
@@ -13,7 +13,6 @@
#define cmVisualStudioTargetGenerator_h
#include "cmStandardIncludes.h"
-class cmTarget;
class cmMakefile;
class cmGeneratorTarget;
class cmGeneratedFileStream;
@@ -29,7 +28,7 @@ struct cmIDEFlagTable;
class cmVisualStudio10TargetGenerator
{
public:
- cmVisualStudio10TargetGenerator(cmTarget* target,
+ cmVisualStudio10TargetGenerator(cmGeneratorTarget* target,
cmGlobalVisualStudio10Generator* gg);
~cmVisualStudio10TargetGenerator();
void Generate();
@@ -148,7 +147,6 @@ private:
OptionsMap LinkOptions;
std::string PathToVcxproj;
std::vector<std::string> Configurations;
- cmTarget* Target;
cmGeneratorTarget* GeneratorTarget;
cmMakefile* Makefile;
std::string Platform;
diff --git a/Source/cmXCodeObject.h b/Source/cmXCodeObject.h
index ed2940a..0f0548b 100644
--- a/Source/cmXCodeObject.h
+++ b/Source/cmXCodeObject.h
@@ -13,7 +13,7 @@
#define cmXCodeObject_h
#include "cmStandardIncludes.h"
-class cmTarget;
+class cmGeneratorTarget;
class cmXCodeObject
{
@@ -87,11 +87,11 @@ public:
{
this->Id = id;
}
- cmTarget* GetTarget()
+ cmGeneratorTarget* GetTarget()
{
return this->Target;
}
- void SetTarget(cmTarget* t)
+ void SetTarget(cmGeneratorTarget* t)
{
this->Target = t;
}
@@ -146,7 +146,7 @@ public:
protected:
void PrintString(std::ostream& os) const;
- cmTarget* Target;
+ cmGeneratorTarget* Target;
Type TypeValue;
std::string Id;
PBXType IsA;