Merge topic 'minor-cleanups'
531e40b
cmTarget: Make GetSourceFiles populate an out-vector parameter.38de54c
cmGeneratorTarget: Add methods to access source file groups.f579fe0
Help: Fix link to MAP_IMPORTED_CONFIG_<CONFIG>590d238
cmTarget: Handle NO_SYSTEM_FROM_IMPORTED.
This commit is contained in:
commit
e56530f612
|
@ -428,7 +428,7 @@ the ``CONFIG`` generator expression.
|
||||||
|
|
||||||
The ``CONFIG`` parameter is compared case-insensitively with the configuration
|
The ``CONFIG`` parameter is compared case-insensitively with the configuration
|
||||||
being built. In the presence of :prop_tgt:`IMPORTED` targets, the content of
|
being built. In the presence of :prop_tgt:`IMPORTED` targets, the content of
|
||||||
:prop_tgt:`MAP_IMPORTED_CONFIG_DEBUG <MAP_IMPORTED_CONFIG_CONFIG>` is also
|
:prop_tgt:`MAP_IMPORTED_CONFIG_DEBUG <MAP_IMPORTED_CONFIG_<CONFIG>>` is also
|
||||||
accounted for by this expression.
|
accounted for by this expression.
|
||||||
|
|
||||||
Some buildsystems generated by :manual:`cmake(1)` have a predetermined
|
Some buildsystems generated by :manual:`cmake(1)` have a predetermined
|
||||||
|
|
|
@ -398,7 +398,8 @@ void cmExtraCodeBlocksGenerator
|
||||||
case cmTarget::OBJECT_LIBRARY:
|
case cmTarget::OBJECT_LIBRARY:
|
||||||
case cmTarget::UTILITY: // can have sources since 2.6.3
|
case cmTarget::UTILITY: // can have sources since 2.6.3
|
||||||
{
|
{
|
||||||
const std::vector<cmSourceFile*>&sources=ti->second.GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
ti->second.GetSourceFiles(sources);
|
||||||
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
|
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
|
||||||
si!=sources.end(); si++)
|
si!=sources.end(); si++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -559,7 +559,8 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
|
||||||
std::vector<cmSourceGroup> sourceGroups=makefile->GetSourceGroups();
|
std::vector<cmSourceGroup> sourceGroups=makefile->GetSourceGroups();
|
||||||
// get the files from the source lists then add them to the groups
|
// get the files from the source lists then add them to the groups
|
||||||
cmTarget* tgt = const_cast<cmTarget*>(&ti->second);
|
cmTarget* tgt = const_cast<cmTarget*>(&ti->second);
|
||||||
std::vector<cmSourceFile*>const & files = tgt->GetSourceFiles();
|
std::vector<cmSourceFile*> files;
|
||||||
|
tgt->GetSourceFiles(files);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator sfIt = files.begin();
|
for(std::vector<cmSourceFile*>::const_iterator sfIt = files.begin();
|
||||||
sfIt != files.end();
|
sfIt != files.end();
|
||||||
sfIt++)
|
sfIt++)
|
||||||
|
|
|
@ -237,7 +237,8 @@ void cmExtraSublimeTextGenerator::
|
||||||
{
|
{
|
||||||
cmGeneratorTarget *gtgt = this->GlobalGenerator
|
cmGeneratorTarget *gtgt = this->GlobalGenerator
|
||||||
->GetGeneratorTarget(target);
|
->GetGeneratorTarget(target);
|
||||||
std::vector<cmSourceFile*> const& sourceFiles = target->GetSourceFiles();
|
std::vector<cmSourceFile*> sourceFiles;
|
||||||
|
target->GetSourceFiles(sourceFiles);
|
||||||
std::vector<cmSourceFile*>::const_iterator sourceFilesEnd =
|
std::vector<cmSourceFile*>::const_iterator sourceFilesEnd =
|
||||||
sourceFiles.end();
|
sourceFiles.end();
|
||||||
for (std::vector<cmSourceFile*>::const_iterator iter =
|
for (std::vector<cmSourceFile*>::const_iterator iter =
|
||||||
|
|
|
@ -132,8 +132,8 @@ void cmFLTKWrapUICommand::FinalPass()
|
||||||
cmSystemTools::Message(msg.c_str(),"Warning");
|
cmSystemTools::Message(msg.c_str(),"Warning");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::vector<cmSourceFile*> const& srcs =
|
std::vector<cmSourceFile*> srcs;
|
||||||
target->GetSourceFiles();
|
target->GetSourceFiles(srcs);
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for (unsigned int i = 0; i < srcs.size(); ++i)
|
for (unsigned int i = 0; i < srcs.size(); ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,7 +65,8 @@ cmGeneratorTarget::GetSourceDepends(cmSourceFile* sf) const
|
||||||
static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
|
static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
|
||||||
const char *config, cmTarget *headTarget,
|
const char *config, cmTarget *headTarget,
|
||||||
cmGeneratorExpressionDAGChecker *dagChecker,
|
cmGeneratorExpressionDAGChecker *dagChecker,
|
||||||
std::vector<std::string>& result)
|
std::vector<std::string>& result,
|
||||||
|
bool excludeImported)
|
||||||
{
|
{
|
||||||
cmTarget* depTgt = mf->FindTargetToUse(name.c_str());
|
cmTarget* depTgt = mf->FindTargetToUse(name.c_str());
|
||||||
|
|
||||||
|
@ -85,7 +86,7 @@ static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
|
||||||
config, false, headTarget,
|
config, false, headTarget,
|
||||||
depTgt, dagChecker), result);
|
depTgt, dagChecker), result);
|
||||||
}
|
}
|
||||||
if (!depTgt->IsImported())
|
if (!depTgt->IsImported() || excludeImported)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -101,6 +102,84 @@ static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void
|
||||||
|
cmGeneratorTarget::GetObjectSources(std::vector<cmSourceFile*> &objs) const
|
||||||
|
{
|
||||||
|
objs = this->ObjectSources;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
const std::string& cmGeneratorTarget::GetObjectName(cmSourceFile const* file)
|
||||||
|
{
|
||||||
|
return this->Objects[file];
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmGeneratorTarget::AddObject(cmSourceFile *sf, std::string const&name)
|
||||||
|
{
|
||||||
|
this->Objects[sf] = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void cmGeneratorTarget::AddExplicitObjectName(cmSourceFile* sf)
|
||||||
|
{
|
||||||
|
this->ExplicitObjectName.insert(sf);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
bool cmGeneratorTarget::HasExplicitObjectName(cmSourceFile const* file) const
|
||||||
|
{
|
||||||
|
std::set<cmSourceFile const*>::const_iterator it
|
||||||
|
= this->ExplicitObjectName.find(file);
|
||||||
|
return it != this->ExplicitObjectName.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void cmGeneratorTarget::GetResxSources(std::vector<cmSourceFile*>& srcs) const
|
||||||
|
{
|
||||||
|
srcs = this->ResxSources;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void cmGeneratorTarget::GetIDLSources(std::vector<cmSourceFile*>& srcs) const
|
||||||
|
{
|
||||||
|
srcs = this->IDLSources;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void
|
||||||
|
cmGeneratorTarget::GetHeaderSources(std::vector<cmSourceFile*>& srcs) const
|
||||||
|
{
|
||||||
|
srcs = this->HeaderSources;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void cmGeneratorTarget::GetExtraSources(std::vector<cmSourceFile*>& srcs) const
|
||||||
|
{
|
||||||
|
srcs = this->ExtraSources;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void
|
||||||
|
cmGeneratorTarget::GetCustomCommands(std::vector<cmSourceFile*>& srcs) const
|
||||||
|
{
|
||||||
|
srcs = this->CustomCommands;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void
|
||||||
|
cmGeneratorTarget::GetExpectedResxHeaders(std::set<std::string>& srcs) const
|
||||||
|
{
|
||||||
|
srcs = this->ExpectedResxHeaders;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void
|
||||||
|
cmGeneratorTarget::GetExternalObjects(std::vector<cmSourceFile*>& srcs) const
|
||||||
|
{
|
||||||
|
srcs = this->ExternalObjects;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
|
bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
|
||||||
const char *config) const
|
const char *config) const
|
||||||
|
@ -130,6 +209,9 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
|
||||||
this->GetName(),
|
this->GetName(),
|
||||||
"SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
|
"SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
|
||||||
|
|
||||||
|
bool excludeImported
|
||||||
|
= this->Target->GetPropertyAsBool("NO_SYSTEM_FROM_IMPORTED");
|
||||||
|
|
||||||
std::vector<std::string> result;
|
std::vector<std::string> result;
|
||||||
for (std::set<cmStdString>::const_iterator
|
for (std::set<cmStdString>::const_iterator
|
||||||
it = this->Target->GetSystemIncludeDirectories().begin();
|
it = this->Target->GetSystemIncludeDirectories().begin();
|
||||||
|
@ -156,7 +238,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
|
||||||
}
|
}
|
||||||
|
|
||||||
handleSystemIncludesDep(this->Makefile, *li, config, this->Target,
|
handleSystemIncludesDep(this->Makefile, *li, config, this->Target,
|
||||||
&dagChecker, result);
|
&dagChecker, result, excludeImported);
|
||||||
|
|
||||||
std::vector<std::string> deps;
|
std::vector<std::string> deps;
|
||||||
tgt->GetTransitivePropertyLinkLibraries(config, this->Target, deps);
|
tgt->GetTransitivePropertyLinkLibraries(config, this->Target, deps);
|
||||||
|
@ -167,7 +249,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
|
||||||
if (uniqueDeps.insert(*di).second)
|
if (uniqueDeps.insert(*di).second)
|
||||||
{
|
{
|
||||||
handleSystemIncludesDep(this->Makefile, *di, config, this->Target,
|
handleSystemIncludesDep(this->Makefile, *di, config, this->Target,
|
||||||
&dagChecker, result);
|
&dagChecker, result, excludeImported);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -202,9 +284,9 @@ bool cmGeneratorTarget::GetPropertyAsBool(const char *prop) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::vector<cmSourceFile*> const& cmGeneratorTarget::GetSourceFiles() const
|
void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*> &files) const
|
||||||
{
|
{
|
||||||
return this->Target->GetSourceFiles();
|
this->Target->GetSourceFiles(files);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -216,7 +298,8 @@ void cmGeneratorTarget::ClassifySources()
|
||||||
bool isObjLib = targetType == cmTarget::OBJECT_LIBRARY;
|
bool isObjLib = targetType == cmTarget::OBJECT_LIBRARY;
|
||||||
|
|
||||||
std::vector<cmSourceFile*> badObjLib;
|
std::vector<cmSourceFile*> badObjLib;
|
||||||
std::vector<cmSourceFile*> const& sources = this->Target->GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
this->Target->GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
||||||
si != sources.end(); ++si)
|
si != sources.end(); ++si)
|
||||||
{
|
{
|
||||||
|
@ -414,7 +497,8 @@ cmTargetTraceDependencies
|
||||||
this->CurrentEntry = 0;
|
this->CurrentEntry = 0;
|
||||||
|
|
||||||
// Queue all the source files already specified for the target.
|
// Queue all the source files already specified for the target.
|
||||||
std::vector<cmSourceFile*> const& sources = this->Target->GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
this->Target->GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
||||||
si != sources.end(); ++si)
|
si != sources.end(); ++si)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,36 +30,35 @@ public:
|
||||||
const char *GetName() const;
|
const char *GetName() const;
|
||||||
const char *GetProperty(const char *prop) const;
|
const char *GetProperty(const char *prop) const;
|
||||||
bool GetPropertyAsBool(const char *prop) const;
|
bool GetPropertyAsBool(const char *prop) const;
|
||||||
std::vector<cmSourceFile*> const& GetSourceFiles() const;
|
void GetSourceFiles(std::vector<cmSourceFile*>& files) const;
|
||||||
|
|
||||||
|
void GetObjectSources(std::vector<cmSourceFile*> &) const;
|
||||||
|
const std::string& GetObjectName(cmSourceFile const* file);
|
||||||
|
|
||||||
|
void AddObject(cmSourceFile *sf, std::string const&name);
|
||||||
|
bool HasExplicitObjectName(cmSourceFile const* file) const;
|
||||||
|
void AddExplicitObjectName(cmSourceFile* sf);
|
||||||
|
|
||||||
|
void GetResxSources(std::vector<cmSourceFile*>&) const;
|
||||||
|
void GetIDLSources(std::vector<cmSourceFile*>&) const;
|
||||||
|
void GetExternalObjects(std::vector<cmSourceFile*>&) const;
|
||||||
|
void GetHeaderSources(std::vector<cmSourceFile*>&) const;
|
||||||
|
void GetExtraSources(std::vector<cmSourceFile*>&) const;
|
||||||
|
void GetCustomCommands(std::vector<cmSourceFile*>&) const;
|
||||||
|
void GetExpectedResxHeaders(std::set<std::string>&) const;
|
||||||
|
|
||||||
cmTarget* Target;
|
cmTarget* Target;
|
||||||
cmMakefile* Makefile;
|
cmMakefile* Makefile;
|
||||||
cmLocalGenerator* LocalGenerator;
|
cmLocalGenerator* LocalGenerator;
|
||||||
cmGlobalGenerator* GlobalGenerator;
|
cmGlobalGenerator* GlobalGenerator;
|
||||||
|
|
||||||
/** Sources classified by purpose. */
|
|
||||||
std::vector<cmSourceFile*> CustomCommands;
|
|
||||||
std::vector<cmSourceFile*> ExtraSources;
|
|
||||||
std::vector<cmSourceFile*> HeaderSources;
|
|
||||||
std::vector<cmSourceFile*> ObjectSources;
|
|
||||||
std::vector<cmSourceFile*> ExternalObjects;
|
|
||||||
std::vector<cmSourceFile*> IDLSources;
|
|
||||||
std::vector<cmSourceFile*> ResxSources;
|
|
||||||
|
|
||||||
std::string ModuleDefinitionFile;
|
std::string ModuleDefinitionFile;
|
||||||
|
|
||||||
std::map<cmSourceFile const*, std::string> Objects;
|
|
||||||
std::set<cmSourceFile const*> ExplicitObjectName;
|
|
||||||
|
|
||||||
std::set<std::string> ExpectedResxHeaders;
|
|
||||||
|
|
||||||
/** Full path with trailing slash to the top-level directory
|
/** Full path with trailing slash to the top-level directory
|
||||||
holding object files for this target. Includes the build
|
holding object files for this target. Includes the build
|
||||||
time config name placeholder if needed for the generator. */
|
time config name placeholder if needed for the generator. */
|
||||||
std::string ObjectDirectory;
|
std::string ObjectDirectory;
|
||||||
|
|
||||||
std::vector<cmTarget*> ObjectLibraries;
|
|
||||||
|
|
||||||
void UseObjectLibraries(std::vector<std::string>& objs) const;
|
void UseObjectLibraries(std::vector<std::string>& objs) const;
|
||||||
|
|
||||||
void GetAppleArchs(const char* config,
|
void GetAppleArchs(const char* config,
|
||||||
|
@ -89,11 +88,23 @@ public:
|
||||||
/** Get sources that must be built before the given source. */
|
/** Get sources that must be built before the given source. */
|
||||||
std::vector<cmSourceFile*> const* GetSourceDepends(cmSourceFile* sf) const;
|
std::vector<cmSourceFile*> const* GetSourceDepends(cmSourceFile* sf) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class cmTargetTraceDependencies;
|
||||||
struct SourceEntry { std::vector<cmSourceFile*> Depends; };
|
struct SourceEntry { std::vector<cmSourceFile*> Depends; };
|
||||||
typedef std::map<cmSourceFile*, SourceEntry> SourceEntriesType;
|
typedef std::map<cmSourceFile*, SourceEntry> SourceEntriesType;
|
||||||
SourceEntriesType SourceEntries;
|
SourceEntriesType SourceEntries;
|
||||||
|
|
||||||
private:
|
std::vector<cmSourceFile*> CustomCommands;
|
||||||
|
std::vector<cmSourceFile*> ExtraSources;
|
||||||
|
std::vector<cmSourceFile*> HeaderSources;
|
||||||
|
std::vector<cmSourceFile*> ExternalObjects;
|
||||||
|
std::vector<cmSourceFile*> IDLSources;
|
||||||
|
std::vector<cmSourceFile*> ResxSources;
|
||||||
|
std::map<cmSourceFile const*, std::string> Objects;
|
||||||
|
std::set<cmSourceFile const*> ExplicitObjectName;
|
||||||
|
std::set<std::string> ExpectedResxHeaders;
|
||||||
|
std::vector<cmSourceFile*> ObjectSources;
|
||||||
|
std::vector<cmTarget*> ObjectLibraries;
|
||||||
mutable std::map<std::string, std::vector<std::string> > SystemIncludesCache;
|
mutable std::map<std::string, std::vector<std::string> > SystemIncludesCache;
|
||||||
|
|
||||||
cmGeneratorTarget(cmGeneratorTarget const&);
|
cmGeneratorTarget(cmGeneratorTarget const&);
|
||||||
|
|
|
@ -2900,7 +2900,8 @@ void cmGlobalGenerator::WriteSummary(cmTarget* target)
|
||||||
|
|
||||||
// List the source files with any per-source labels.
|
// List the source files with any per-source labels.
|
||||||
fout << "# Source files and their labels\n";
|
fout << "# Source files and their labels\n";
|
||||||
std::vector<cmSourceFile*> const& sources = target->GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
target->GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
||||||
si != sources.end(); ++si)
|
si != sources.end(); ++si)
|
||||||
{
|
{
|
||||||
|
|
|
@ -138,7 +138,8 @@ bool cmGlobalKdevelopGenerator
|
||||||
for (cmTargets::iterator ti = targets.begin();
|
for (cmTargets::iterator ti = targets.begin();
|
||||||
ti != targets.end(); ti++)
|
ti != targets.end(); ti++)
|
||||||
{
|
{
|
||||||
const std::vector<cmSourceFile*>& sources=ti->second.GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
ti->second.GetSourceFiles(sources);
|
||||||
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
|
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
|
||||||
si!=sources.end(); si++)
|
si!=sources.end(); si++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -644,15 +644,17 @@ void cmGlobalNinjaGenerator::ComputeTargetObjects(cmGeneratorTarget* gt) const
|
||||||
dir_max += "/";
|
dir_max += "/";
|
||||||
gt->ObjectDirectory = dir_max;
|
gt->ObjectDirectory = dir_max;
|
||||||
|
|
||||||
|
std::vector<cmSourceFile*> objectSources;
|
||||||
|
gt->GetObjectSources(objectSources);
|
||||||
// Compute the name of each object file.
|
// Compute the name of each object file.
|
||||||
for(std::vector<cmSourceFile*>::iterator
|
for(std::vector<cmSourceFile*>::iterator
|
||||||
si = gt->ObjectSources.begin();
|
si = objectSources.begin();
|
||||||
si != gt->ObjectSources.end(); ++si)
|
si != objectSources.end(); ++si)
|
||||||
{
|
{
|
||||||
cmSourceFile* sf = *si;
|
cmSourceFile* sf = *si;
|
||||||
std::string objectName = gt->LocalGenerator
|
std::string objectName = gt->LocalGenerator
|
||||||
->GetObjectFileNameWithoutTarget(*sf, dir_max);
|
->GetObjectFileNameWithoutTarget(*sf, dir_max);
|
||||||
gt->Objects[sf] = objectName;
|
gt->AddObject(sf, objectName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -120,17 +120,19 @@ cmGlobalUnixMakefileGenerator3
|
||||||
dir_max += "/";
|
dir_max += "/";
|
||||||
gt->ObjectDirectory = dir_max;
|
gt->ObjectDirectory = dir_max;
|
||||||
|
|
||||||
|
std::vector<cmSourceFile*> objectSources;
|
||||||
|
gt->GetObjectSources(objectSources);
|
||||||
// Compute the name of each object file.
|
// Compute the name of each object file.
|
||||||
for(std::vector<cmSourceFile*>::iterator
|
for(std::vector<cmSourceFile*>::iterator
|
||||||
si = gt->ObjectSources.begin();
|
si = objectSources.begin();
|
||||||
si != gt->ObjectSources.end(); ++si)
|
si != objectSources.end(); ++si)
|
||||||
{
|
{
|
||||||
cmSourceFile* sf = *si;
|
cmSourceFile* sf = *si;
|
||||||
bool hasSourceExtension = true;
|
bool hasSourceExtension = true;
|
||||||
std::string objectName = gt->LocalGenerator
|
std::string objectName = gt->LocalGenerator
|
||||||
->GetObjectFileNameWithoutTarget(*sf, dir_max,
|
->GetObjectFileNameWithoutTarget(*sf, dir_max,
|
||||||
&hasSourceExtension);
|
&hasSourceExtension);
|
||||||
gt->Objects[sf] = objectName;
|
gt->AddObject(sf, objectName);
|
||||||
lg->AddLocalObjectFile(target, sf, objectName, hasSourceExtension);
|
lg->AddLocalObjectFile(target, sf, objectName, hasSourceExtension);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,9 +129,11 @@ cmGlobalVisualStudioGenerator
|
||||||
// Count the number of object files with each name. Note that
|
// Count the number of object files with each name. Note that
|
||||||
// windows file names are not case sensitive.
|
// windows file names are not case sensitive.
|
||||||
std::map<cmStdString, int> counts;
|
std::map<cmStdString, int> counts;
|
||||||
|
std::vector<cmSourceFile*> objectSources;
|
||||||
|
gt->GetObjectSources(objectSources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = gt->ObjectSources.begin();
|
si = objectSources.begin();
|
||||||
si != gt->ObjectSources.end(); ++si)
|
si != objectSources.end(); ++si)
|
||||||
{
|
{
|
||||||
cmSourceFile* sf = *si;
|
cmSourceFile* sf = *si;
|
||||||
std::string objectNameLower = cmSystemTools::LowerCase(
|
std::string objectNameLower = cmSystemTools::LowerCase(
|
||||||
|
@ -143,8 +145,8 @@ cmGlobalVisualStudioGenerator
|
||||||
// For all source files producing duplicate names we need unique
|
// For all source files producing duplicate names we need unique
|
||||||
// object name computation.
|
// object name computation.
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = gt->ObjectSources.begin();
|
si = objectSources.begin();
|
||||||
si != gt->ObjectSources.end(); ++si)
|
si != objectSources.end(); ++si)
|
||||||
{
|
{
|
||||||
cmSourceFile* sf = *si;
|
cmSourceFile* sf = *si;
|
||||||
std::string objectName =
|
std::string objectName =
|
||||||
|
@ -152,10 +154,10 @@ cmGlobalVisualStudioGenerator
|
||||||
objectName += ".obj";
|
objectName += ".obj";
|
||||||
if(counts[cmSystemTools::LowerCase(objectName)] > 1)
|
if(counts[cmSystemTools::LowerCase(objectName)] > 1)
|
||||||
{
|
{
|
||||||
gt->ExplicitObjectName.insert(sf);
|
gt->AddExplicitObjectName(sf);
|
||||||
objectName = lg->GetObjectFileNameWithoutTarget(*sf, dir_max);
|
objectName = lg->GetObjectFileNameWithoutTarget(*sf, dir_max);
|
||||||
}
|
}
|
||||||
gt->Objects[sf] = objectName;
|
gt->AddObject(sf, objectName);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string dir = gt->Makefile->GetCurrentOutputDirectory();
|
std::string dir = gt->Makefile->GetCurrentOutputDirectory();
|
||||||
|
|
|
@ -991,7 +991,8 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
|
||||||
}
|
}
|
||||||
|
|
||||||
// organize the sources
|
// organize the sources
|
||||||
std::vector<cmSourceFile*> classes = cmtarget.GetSourceFiles();
|
std::vector<cmSourceFile*> classes;
|
||||||
|
cmtarget.GetSourceFiles(classes);
|
||||||
std::sort(classes.begin(), classes.end(), cmSourceFilePathCompare());
|
std::sort(classes.begin(), classes.end(), cmSourceFilePathCompare());
|
||||||
|
|
||||||
std::vector<cmXCodeObject*> externalObjFiles;
|
std::vector<cmXCodeObject*> externalObjFiles;
|
||||||
|
@ -1360,7 +1361,8 @@ void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases,
|
||||||
postbuild.push_back(command);
|
postbuild.push_back(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<cmSourceFile*>const &classes = cmtarget.GetSourceFiles();
|
std::vector<cmSourceFile*> classes;
|
||||||
|
cmtarget.GetSourceFiles(classes);
|
||||||
// add all the sources
|
// add all the sources
|
||||||
std::vector<cmCustomCommand> commands;
|
std::vector<cmCustomCommand> commands;
|
||||||
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
|
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
|
||||||
|
@ -2442,7 +2444,8 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
|
||||||
// Add source files without build rules for editing convenience.
|
// Add source files without build rules for editing convenience.
|
||||||
if(cmtarget.GetType() == cmTarget::UTILITY)
|
if(cmtarget.GetType() == cmTarget::UTILITY)
|
||||||
{
|
{
|
||||||
std::vector<cmSourceFile*> const& sources = cmtarget.GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
cmtarget.GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator i = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator i = sources.begin();
|
||||||
i != sources.end(); ++i)
|
i != sources.end(); ++i)
|
||||||
{
|
{
|
||||||
|
@ -2945,7 +2948,8 @@ void cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
|
||||||
cmtarget.AddSourceFile(sf);
|
cmtarget.AddSourceFile(sf);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<cmSourceFile*> classes = cmtarget.GetSourceFiles();
|
std::vector<cmSourceFile*> classes;
|
||||||
|
cmtarget.GetSourceFiles(classes);
|
||||||
|
|
||||||
// Put cmSourceFile instances in proper groups:
|
// Put cmSourceFile instances in proper groups:
|
||||||
for(std::vector<cmSourceFile*>::const_iterator s = classes.begin();
|
for(std::vector<cmSourceFile*>::const_iterator s = classes.begin();
|
||||||
|
@ -3925,9 +3929,11 @@ cmGlobalXCodeGenerator
|
||||||
// to avoid exact duplicate file names. Note that Mac file names are not
|
// to avoid exact duplicate file names. Note that Mac file names are not
|
||||||
// typically case sensitive, hence the LowerCase.
|
// typically case sensitive, hence the LowerCase.
|
||||||
std::map<cmStdString, int> counts;
|
std::map<cmStdString, int> counts;
|
||||||
|
std::vector<cmSourceFile*> objectSources;
|
||||||
|
gt->GetObjectSources(objectSources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = gt->ObjectSources.begin();
|
si = objectSources.begin();
|
||||||
si != gt->ObjectSources.end(); ++si)
|
si != objectSources.end(); ++si)
|
||||||
{
|
{
|
||||||
cmSourceFile* sf = *si;
|
cmSourceFile* sf = *si;
|
||||||
std::string objectName =
|
std::string objectName =
|
||||||
|
@ -3941,7 +3947,7 @@ cmGlobalXCodeGenerator
|
||||||
// TODO: emit warning about duplicate name?
|
// TODO: emit warning about duplicate name?
|
||||||
}
|
}
|
||||||
|
|
||||||
gt->Objects[sf] = objectName;
|
gt->AddObject(sf, objectName);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* configName = this->GetCMakeCFGIntDir();
|
const char* configName = this->GetCMakeCFGIntDir();
|
||||||
|
|
|
@ -657,7 +657,8 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang,
|
||||||
cmStdString objs;
|
cmStdString objs;
|
||||||
std::vector<std::string> objVector;
|
std::vector<std::string> objVector;
|
||||||
// Add all the sources outputs to the depends of the target
|
// Add all the sources outputs to the depends of the target
|
||||||
std::vector<cmSourceFile*> const& classes = target.GetSourceFiles();
|
std::vector<cmSourceFile*> classes;
|
||||||
|
target.GetSourceFiles(classes);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
|
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
|
||||||
i != classes.end(); ++i)
|
i != classes.end(); ++i)
|
||||||
{
|
{
|
||||||
|
@ -1631,7 +1632,8 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs,
|
||||||
if(this->Makefile->IsOn("WIN32") &&
|
if(this->Makefile->IsOn("WIN32") &&
|
||||||
!(this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW")))
|
!(this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW")))
|
||||||
{
|
{
|
||||||
const std::vector<cmSourceFile*>& sources = target->GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
target->GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator i = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator i = sources.begin();
|
||||||
i != sources.end(); ++i)
|
i != sources.end(); ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -314,7 +314,8 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
|
||||||
std::vector<cmSourceGroup> sourceGroups = this->Makefile->GetSourceGroups();
|
std::vector<cmSourceGroup> sourceGroups = this->Makefile->GetSourceGroups();
|
||||||
|
|
||||||
// get the classes from the source lists then add them to the groups
|
// get the classes from the source lists then add them to the groups
|
||||||
std::vector<cmSourceFile*> const & classes = target.GetSourceFiles();
|
std::vector<cmSourceFile*> classes;
|
||||||
|
target.GetSourceFiles(classes);
|
||||||
|
|
||||||
// now all of the source files have been properly assigned to the target
|
// now all of the source files have been properly assigned to the target
|
||||||
// now stick them into source groups using the reg expressions
|
// now stick them into source groups using the reg expressions
|
||||||
|
@ -401,9 +402,9 @@ void cmLocalVisualStudio6Generator
|
||||||
std::string compileFlags;
|
std::string compileFlags;
|
||||||
std::vector<std::string> depends;
|
std::vector<std::string> depends;
|
||||||
std::string objectNameDir;
|
std::string objectNameDir;
|
||||||
if(gt->ExplicitObjectName.find(*sf) != gt->ExplicitObjectName.end())
|
if(gt->HasExplicitObjectName(*sf))
|
||||||
{
|
{
|
||||||
objectNameDir = cmSystemTools::GetFilenamePath(gt->Objects[*sf]);
|
objectNameDir = cmSystemTools::GetFilenamePath(gt->GetObjectName(*sf));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add per-source file flags.
|
// Add per-source file flags.
|
||||||
|
|
|
@ -1381,7 +1381,8 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
|
||||||
|
|
||||||
// get the classes from the source lists then add them to the groups
|
// get the classes from the source lists then add them to the groups
|
||||||
this->ModuleDefinitionFile = "";
|
this->ModuleDefinitionFile = "";
|
||||||
std::vector<cmSourceFile*>const & classes = target.GetSourceFiles();
|
std::vector<cmSourceFile*> classes;
|
||||||
|
target.GetSourceFiles(classes);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
|
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
|
||||||
i != classes.end(); i++)
|
i != classes.end(); i++)
|
||||||
{
|
{
|
||||||
|
@ -1468,9 +1469,9 @@ cmLocalVisualStudio7GeneratorFCInfo
|
||||||
cmGeneratorTarget* gt =
|
cmGeneratorTarget* gt =
|
||||||
lg->GetGlobalGenerator()->GetGeneratorTarget(&target);
|
lg->GetGlobalGenerator()->GetGeneratorTarget(&target);
|
||||||
std::string objectName;
|
std::string objectName;
|
||||||
if(gt->ExplicitObjectName.find(&sf) != gt->ExplicitObjectName.end())
|
if(gt->HasExplicitObjectName(&sf))
|
||||||
{
|
{
|
||||||
objectName = gt->Objects[&sf];
|
objectName = gt->GetObjectName(&sf);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute per-source, per-config information.
|
// Compute per-source, per-config information.
|
||||||
|
|
|
@ -151,9 +151,11 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
|
||||||
|
|
||||||
// First generate the object rule files. Save a list of all object
|
// First generate the object rule files. Save a list of all object
|
||||||
// files for this target.
|
// files for this target.
|
||||||
|
std::vector<cmSourceFile*> customCommands;
|
||||||
|
this->GeneratorTarget->GetCustomCommands(customCommands);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->CustomCommands.begin();
|
si = customCommands.begin();
|
||||||
si != this->GeneratorTarget->CustomCommands.end(); ++si)
|
si != customCommands.end(); ++si)
|
||||||
{
|
{
|
||||||
cmCustomCommand const* cc = (*si)->GetCustomCommand();
|
cmCustomCommand const* cc = (*si)->GetCustomCommand();
|
||||||
this->GenerateCustomRuleFile(*cc);
|
this->GenerateCustomRuleFile(*cc);
|
||||||
|
@ -170,21 +172,28 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
std::vector<cmSourceFile*> headerSources;
|
||||||
|
this->GeneratorTarget->GetHeaderSources(headerSources);
|
||||||
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
||||||
this->GeneratorTarget->HeaderSources,
|
headerSources,
|
||||||
this->MacOSXContentGenerator);
|
this->MacOSXContentGenerator);
|
||||||
|
std::vector<cmSourceFile*> extraSources;
|
||||||
|
this->GeneratorTarget->GetExtraSources(extraSources);
|
||||||
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
||||||
this->GeneratorTarget->ExtraSources,
|
extraSources,
|
||||||
this->MacOSXContentGenerator);
|
this->MacOSXContentGenerator);
|
||||||
|
std::vector<cmSourceFile*> externalObjects;
|
||||||
|
this->GeneratorTarget->GetExternalObjects(externalObjects);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->ExternalObjects.begin();
|
si = externalObjects.begin();
|
||||||
si != this->GeneratorTarget->ExternalObjects.end(); ++si)
|
si != externalObjects.end(); ++si)
|
||||||
{
|
{
|
||||||
this->ExternalObjects.push_back((*si)->GetFullPath());
|
this->ExternalObjects.push_back((*si)->GetFullPath());
|
||||||
}
|
}
|
||||||
|
std::vector<cmSourceFile*> objectSources;
|
||||||
|
this->GeneratorTarget->GetObjectSources(objectSources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->ObjectSources.begin();
|
si = objectSources.begin(); si != objectSources.end(); ++si)
|
||||||
si != this->GeneratorTarget->ObjectSources.end(); ++si)
|
|
||||||
{
|
{
|
||||||
// Generate this object file's rule file.
|
// Generate this object file's rule file.
|
||||||
this->WriteObjectRuleFiles(**si);
|
this->WriteObjectRuleFiles(**si);
|
||||||
|
@ -421,7 +430,8 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(cmSourceFile& source)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the full path name of the object file.
|
// Get the full path name of the object file.
|
||||||
std::string const& objectName = this->GeneratorTarget->Objects[&source];
|
std::string const& objectName = this->GeneratorTarget
|
||||||
|
->GetObjectName(&source);
|
||||||
std::string obj = this->LocalGenerator->GetTargetDirectory(*this->Target);
|
std::string obj = this->LocalGenerator->GetTargetDirectory(*this->Target);
|
||||||
obj += "/";
|
obj += "/";
|
||||||
obj += objectName;
|
obj += objectName;
|
||||||
|
@ -1142,8 +1152,8 @@ cmMakefileTargetGenerator
|
||||||
::DriveCustomCommands(std::vector<std::string>& depends)
|
::DriveCustomCommands(std::vector<std::string>& depends)
|
||||||
{
|
{
|
||||||
// Depend on all custom command outputs.
|
// Depend on all custom command outputs.
|
||||||
const std::vector<cmSourceFile*>& sources =
|
std::vector<cmSourceFile*> sources;
|
||||||
this->Target->GetSourceFiles();
|
this->Target->GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
|
||||||
source != sources.end(); ++source)
|
source != sources.end(); ++source)
|
||||||
{
|
{
|
||||||
|
|
|
@ -276,7 +276,8 @@ cmNinjaTargetGenerator
|
||||||
std::string path = this->LocalGenerator->GetHomeRelativeOutputPath();
|
std::string path = this->LocalGenerator->GetHomeRelativeOutputPath();
|
||||||
if(!path.empty())
|
if(!path.empty())
|
||||||
path += "/";
|
path += "/";
|
||||||
std::string const& objectName = this->GeneratorTarget->Objects[source];
|
std::string const& objectName = this->GeneratorTarget
|
||||||
|
->GetObjectName(source);
|
||||||
path += this->LocalGenerator->GetTargetDirectory(*this->Target);
|
path += this->LocalGenerator->GetTargetDirectory(*this->Target);
|
||||||
path += "/";
|
path += "/";
|
||||||
path += objectName;
|
path += objectName;
|
||||||
|
@ -458,28 +459,37 @@ cmNinjaTargetGenerator
|
||||||
<< this->GetTargetName()
|
<< this->GetTargetName()
|
||||||
<< "\n\n";
|
<< "\n\n";
|
||||||
|
|
||||||
|
std::vector<cmSourceFile*> customCommands;
|
||||||
|
this->GeneratorTarget->GetCustomCommands(customCommands);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->CustomCommands.begin();
|
si = customCommands.begin();
|
||||||
si != this->GeneratorTarget->CustomCommands.end(); ++si)
|
si != customCommands.end(); ++si)
|
||||||
{
|
{
|
||||||
cmCustomCommand const* cc = (*si)->GetCustomCommand();
|
cmCustomCommand const* cc = (*si)->GetCustomCommand();
|
||||||
this->GetLocalGenerator()->AddCustomCommandTarget(cc, this->GetTarget());
|
this->GetLocalGenerator()->AddCustomCommandTarget(cc, this->GetTarget());
|
||||||
}
|
}
|
||||||
|
std::vector<cmSourceFile*> headerSources;
|
||||||
|
this->GeneratorTarget->GetHeaderSources(headerSources);
|
||||||
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
||||||
this->GeneratorTarget->HeaderSources,
|
headerSources,
|
||||||
this->MacOSXContentGenerator);
|
this->MacOSXContentGenerator);
|
||||||
|
std::vector<cmSourceFile*> extraSources;
|
||||||
|
this->GeneratorTarget->GetExtraSources(extraSources);
|
||||||
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
|
||||||
this->GeneratorTarget->ExtraSources,
|
extraSources,
|
||||||
this->MacOSXContentGenerator);
|
this->MacOSXContentGenerator);
|
||||||
|
std::vector<cmSourceFile*> externalObjects;
|
||||||
|
this->GeneratorTarget->GetExternalObjects(externalObjects);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->ExternalObjects.begin();
|
si = externalObjects.begin();
|
||||||
si != this->GeneratorTarget->ExternalObjects.end(); ++si)
|
si != externalObjects.end(); ++si)
|
||||||
{
|
{
|
||||||
this->Objects.push_back(this->GetSourceFilePath(*si));
|
this->Objects.push_back(this->GetSourceFilePath(*si));
|
||||||
}
|
}
|
||||||
|
std::vector<cmSourceFile*> objectSources;
|
||||||
|
this->GeneratorTarget->GetObjectSources(objectSources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->ObjectSources.begin();
|
si = objectSources.begin(); si != objectSources.end(); ++si)
|
||||||
si != this->GeneratorTarget->ObjectSources.end(); ++si)
|
|
||||||
{
|
{
|
||||||
this->WriteObjectBuildStatement(*si);
|
this->WriteObjectBuildStatement(*si);
|
||||||
}
|
}
|
||||||
|
@ -539,9 +549,11 @@ cmNinjaTargetGenerator
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add order-only dependencies on custom command outputs.
|
// Add order-only dependencies on custom command outputs.
|
||||||
|
std::vector<cmSourceFile*> customCommands;
|
||||||
|
this->GeneratorTarget->GetCustomCommands(customCommands);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->CustomCommands.begin();
|
si = customCommands.begin();
|
||||||
si != this->GeneratorTarget->CustomCommands.end(); ++si)
|
si != customCommands.end(); ++si)
|
||||||
{
|
{
|
||||||
cmCustomCommand const* cc = (*si)->GetCustomCommand();
|
cmCustomCommand const* cc = (*si)->GetCustomCommand();
|
||||||
const std::vector<std::string>& ccoutputs = cc->GetOutputs();
|
const std::vector<std::string>& ccoutputs = cc->GetOutputs();
|
||||||
|
|
|
@ -42,8 +42,8 @@ void cmNinjaUtilityTargetGenerator::Generate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<cmSourceFile*>& sources =
|
std::vector<cmSourceFile*> sources;
|
||||||
this->GetTarget()->GetSourceFiles();
|
this->GetTarget()->GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
|
||||||
source != sources.end(); ++source)
|
source != sources.end(); ++source)
|
||||||
{
|
{
|
||||||
|
|
|
@ -451,7 +451,8 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target,
|
||||||
const char* sepFiles = "";
|
const char* sepFiles = "";
|
||||||
const char* sepHeaders = "";
|
const char* sepHeaders = "";
|
||||||
|
|
||||||
const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
|
std::vector<cmSourceFile*> srcFiles;
|
||||||
|
target->GetSourceFiles(srcFiles);
|
||||||
|
|
||||||
std::string skip_moc;
|
std::string skip_moc;
|
||||||
const char *sep = "";
|
const char *sep = "";
|
||||||
|
@ -643,7 +644,8 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target,
|
||||||
const char *qtUic = makefile->GetSafeDefinition("QT_UIC_EXECUTABLE");
|
const char *qtUic = makefile->GetSafeDefinition("QT_UIC_EXECUTABLE");
|
||||||
makefile->AddDefinition("_qt_uic_executable", qtUic);
|
makefile->AddDefinition("_qt_uic_executable", qtUic);
|
||||||
|
|
||||||
const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
|
std::vector<cmSourceFile*> srcFiles;
|
||||||
|
target->GetSourceFiles(srcFiles);
|
||||||
|
|
||||||
std::string skip_uic;
|
std::string skip_uic;
|
||||||
const char *sep = "";
|
const char *sep = "";
|
||||||
|
@ -809,7 +811,8 @@ void cmQtAutoGenerators::InitializeAutoRccTarget(cmTarget* target)
|
||||||
{
|
{
|
||||||
cmMakefile *makefile = target->GetMakefile();
|
cmMakefile *makefile = target->GetMakefile();
|
||||||
|
|
||||||
const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
|
std::vector<cmSourceFile*> srcFiles;
|
||||||
|
target->GetSourceFiles(srcFiles);
|
||||||
|
|
||||||
std::vector<cmSourceFile*> newFiles;
|
std::vector<cmSourceFile*> newFiles;
|
||||||
|
|
||||||
|
@ -855,7 +858,8 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target)
|
||||||
const char* sepRccFiles = "";
|
const char* sepRccFiles = "";
|
||||||
cmMakefile *makefile = target->GetMakefile();
|
cmMakefile *makefile = target->GetMakefile();
|
||||||
|
|
||||||
const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
|
std::vector<cmSourceFile*> srcFiles;
|
||||||
|
target->GetSourceFiles(srcFiles);
|
||||||
|
|
||||||
std::string rccFileFiles;
|
std::string rccFileFiles;
|
||||||
std::string rccFileOptions;
|
std::string rccFileOptions;
|
||||||
|
|
|
@ -530,9 +530,9 @@ bool cmTarget::FindSourceFiles()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::vector<cmSourceFile*> const& cmTarget::GetSourceFiles() const
|
void cmTarget::GetSourceFiles(std::vector<cmSourceFile*> &files) const
|
||||||
{
|
{
|
||||||
return this->SourceFiles;
|
files = this->SourceFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -673,7 +673,8 @@ void cmTarget::ConstructSourceFileFlags() const
|
||||||
|
|
||||||
// Handle the MACOSX_PACKAGE_LOCATION property on source files that
|
// Handle the MACOSX_PACKAGE_LOCATION property on source files that
|
||||||
// were not listed in one of the other lists.
|
// were not listed in one of the other lists.
|
||||||
std::vector<cmSourceFile*> const& sources = this->GetSourceFiles();
|
std::vector<cmSourceFile*> sources;
|
||||||
|
this->GetSourceFiles(sources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
|
||||||
si != sources.end(); ++si)
|
si != sources.end(); ++si)
|
||||||
{
|
{
|
||||||
|
|
|
@ -132,7 +132,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Get the list of the source files used by this target
|
* Get the list of the source files used by this target
|
||||||
*/
|
*/
|
||||||
std::vector<cmSourceFile*> const& GetSourceFiles() const;
|
void GetSourceFiles(std::vector<cmSourceFile*> &files) const;
|
||||||
void AddSourceFile(cmSourceFile* sf);
|
void AddSourceFile(cmSourceFile* sf);
|
||||||
std::vector<std::string> const& GetObjectLibraries() const
|
std::vector<std::string> const& GetObjectLibraries() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -376,8 +376,8 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReferences()
|
||||||
|
|
||||||
void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup()
|
void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup()
|
||||||
{
|
{
|
||||||
std::vector<cmSourceFile*> const& resxObjs =
|
std::vector<cmSourceFile*> resxObjs;
|
||||||
this->GeneratorTarget->ResxSources;
|
this->GeneratorTarget->GetResxSources(resxObjs);
|
||||||
if(!resxObjs.empty())
|
if(!resxObjs.empty())
|
||||||
{
|
{
|
||||||
this->WriteString("<ItemGroup>\n", 1);
|
this->WriteString("<ItemGroup>\n", 1);
|
||||||
|
@ -550,9 +550,11 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
|
||||||
void cmVisualStudio10TargetGenerator::WriteCustomCommands()
|
void cmVisualStudio10TargetGenerator::WriteCustomCommands()
|
||||||
{
|
{
|
||||||
this->SourcesVisited.clear();
|
this->SourcesVisited.clear();
|
||||||
|
std::vector<cmSourceFile*> customCommands;
|
||||||
|
this->GeneratorTarget->GetCustomCommands(customCommands);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->CustomCommands.begin();
|
si = customCommands.begin();
|
||||||
si != this->GeneratorTarget->CustomCommands.end(); ++si)
|
si != customCommands.end(); ++si)
|
||||||
{
|
{
|
||||||
this->WriteCustomCommand(*si);
|
this->WriteCustomCommand(*si);
|
||||||
}
|
}
|
||||||
|
@ -697,7 +699,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
|
||||||
// collect up group information
|
// collect up group information
|
||||||
std::vector<cmSourceGroup> sourceGroups =
|
std::vector<cmSourceGroup> sourceGroups =
|
||||||
this->Makefile->GetSourceGroups();
|
this->Makefile->GetSourceGroups();
|
||||||
std::vector<cmSourceFile*> classes = this->Target->GetSourceFiles();
|
std::vector<cmSourceFile*> classes;
|
||||||
|
this->Target->GetSourceFiles(classes);
|
||||||
|
|
||||||
std::set<cmSourceGroup*> groupsUsed;
|
std::set<cmSourceGroup*> groupsUsed;
|
||||||
for(std::vector<cmSourceFile*>::const_iterator s = classes.begin();
|
for(std::vector<cmSourceFile*>::const_iterator s = classes.begin();
|
||||||
|
@ -740,8 +743,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
|
||||||
this->WriteGroupSources(ti->first.c_str(), ti->second, sourceGroups);
|
this->WriteGroupSources(ti->first.c_str(), ti->second, sourceGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<cmSourceFile*> const& resxObjs =
|
std::vector<cmSourceFile*> resxObjs;
|
||||||
this->GeneratorTarget->ResxSources;
|
this->GeneratorTarget->GetResxSources(resxObjs);
|
||||||
if(!resxObjs.empty())
|
if(!resxObjs.empty())
|
||||||
{
|
{
|
||||||
this->WriteString("<ItemGroup>\n", 1);
|
this->WriteString("<ItemGroup>\n", 1);
|
||||||
|
@ -813,7 +816,7 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
|
||||||
this->WriteString("</Filter>\n", 2);
|
this->WriteString("</Filter>\n", 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this->GeneratorTarget->ResxSources.empty())
|
if(!resxObjs.empty())
|
||||||
{
|
{
|
||||||
this->WriteString("<Filter Include=\"Resource Files\">\n", 2);
|
this->WriteString("<Filter Include=\"Resource Files\">\n", 2);
|
||||||
std::string guidName = "SG_Filter_Resource Files";
|
std::string guidName = "SG_Filter_Resource Files";
|
||||||
|
@ -996,12 +999,18 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
|
||||||
}
|
}
|
||||||
this->WriteString("<ItemGroup>\n", 1);
|
this->WriteString("<ItemGroup>\n", 1);
|
||||||
|
|
||||||
this->WriteSources("ClInclude", this->GeneratorTarget->HeaderSources);
|
std::vector<cmSourceFile*> headerSources;
|
||||||
this->WriteSources("Midl", this->GeneratorTarget->IDLSources);
|
this->GeneratorTarget->GetHeaderSources(headerSources);
|
||||||
|
this->WriteSources("ClInclude", headerSources);
|
||||||
|
std::vector<cmSourceFile*> idlSources;
|
||||||
|
this->GeneratorTarget->GetIDLSources(idlSources);
|
||||||
|
this->WriteSources("Midl", idlSources);
|
||||||
|
|
||||||
|
std::vector<cmSourceFile*> objectSources;
|
||||||
|
this->GeneratorTarget->GetObjectSources(objectSources);
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->ObjectSources.begin();
|
si = objectSources.begin();
|
||||||
si != this->GeneratorTarget->ObjectSources.end(); ++si)
|
si != objectSources.end(); ++si)
|
||||||
{
|
{
|
||||||
const char* lang = (*si)->GetLanguage();
|
const char* lang = (*si)->GetLanguage();
|
||||||
const char* tool = NULL;
|
const char* tool = NULL;
|
||||||
|
@ -1038,19 +1047,21 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<cmSourceFile*> externalObjects;
|
||||||
|
this->GeneratorTarget->GetExternalObjects(externalObjects);
|
||||||
if(this->LocalGenerator->GetVersion() > cmLocalVisualStudioGenerator::VS10)
|
if(this->LocalGenerator->GetVersion() > cmLocalVisualStudioGenerator::VS10)
|
||||||
{
|
{
|
||||||
// For VS >= 11 we use LinkObjects to avoid linking custom command
|
// For VS >= 11 we use LinkObjects to avoid linking custom command
|
||||||
// outputs. Use Object for all external objects, generated or not.
|
// outputs. Use Object for all external objects, generated or not.
|
||||||
this->WriteSources("Object", this->GeneratorTarget->ExternalObjects);
|
this->WriteSources("Object", externalObjects);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// If an object file is generated in this target, then vs10 will use
|
// If an object file is generated in this target, then vs10 will use
|
||||||
// it in the build, and we have to list it as None instead of Object.
|
// it in the build, and we have to list it as None instead of Object.
|
||||||
for(std::vector<cmSourceFile*>::const_iterator
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
si = this->GeneratorTarget->ExternalObjects.begin();
|
si = externalObjects.begin();
|
||||||
si != this->GeneratorTarget->ExternalObjects.end(); ++si)
|
si != externalObjects.end(); ++si)
|
||||||
{
|
{
|
||||||
std::vector<cmSourceFile*> const* d =
|
std::vector<cmSourceFile*> const* d =
|
||||||
this->GeneratorTarget->GetSourceDepends(*si);
|
this->GeneratorTarget->GetSourceDepends(*si);
|
||||||
|
@ -1058,7 +1069,9 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->WriteSources("None", this->GeneratorTarget->ExtraSources);
|
std::vector<cmSourceFile*> extraSources;
|
||||||
|
this->GeneratorTarget->GetExtraSources(extraSources);
|
||||||
|
this->WriteSources("None", extraSources);
|
||||||
|
|
||||||
// Add object library contents as external objects.
|
// Add object library contents as external objects.
|
||||||
std::vector<std::string> objs;
|
std::vector<std::string> objs;
|
||||||
|
@ -1081,10 +1094,9 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
|
||||||
cmSourceFile& sf = *source;
|
cmSourceFile& sf = *source;
|
||||||
|
|
||||||
std::string objectName;
|
std::string objectName;
|
||||||
if(this->GeneratorTarget->ExplicitObjectName.find(&sf)
|
if(this->GeneratorTarget->HasExplicitObjectName(&sf))
|
||||||
!= this->GeneratorTarget->ExplicitObjectName.end())
|
|
||||||
{
|
{
|
||||||
objectName = this->GeneratorTarget->Objects[&sf];
|
objectName = this->GeneratorTarget->GetObjectName(&sf);
|
||||||
}
|
}
|
||||||
std::string flags;
|
std::string flags;
|
||||||
std::string defines;
|
std::string defines;
|
||||||
|
@ -1884,8 +1896,10 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
|
||||||
bool cmVisualStudio10TargetGenerator::
|
bool cmVisualStudio10TargetGenerator::
|
||||||
IsResxHeader(const std::string& headerFile)
|
IsResxHeader(const std::string& headerFile)
|
||||||
{
|
{
|
||||||
std::set<std::string>::iterator it =
|
std::set<std::string> expectedResxHeaders;
|
||||||
this->GeneratorTarget->ExpectedResxHeaders.find(headerFile);
|
this->GeneratorTarget->GetExpectedResxHeaders(expectedResxHeaders);
|
||||||
|
|
||||||
return it != this->GeneratorTarget->ExpectedResxHeaders.end();
|
std::set<std::string>::const_iterator it =
|
||||||
|
expectedResxHeaders.find(headerFile);
|
||||||
|
return it != expectedResxHeaders.end();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue