Refactor module definition source enumeration

Add a `cmGeneratorTarget::GetModuleDefinitionSources` method.
This commit is contained in:
Brad King committed 2017-03-09 16:24:27 -05:00
1 parent 0a312e2271
commit 1e0a9ac45d
3 files changed
+15 -9

No files matched your search

+10 -5
View File
@@ -112,7 +112,7 @@ struct IDLSourcesTag
struct ResxTag
{
};
struct ModuleDefinitionFileTag
struct ModuleDefinitionSourcesTag
{
};
struct AppManifestTag
@@ -236,8 +236,8 @@ struct TagVisitor
} else if (!sf->GetLanguage().empty()) {
DoAccept<IsSameTag<Tag, ObjectSourcesTag>::Result>::Do(this->Data, sf);
} else if (ext == "def") {
DoAccept<IsSameTag<Tag, ModuleDefinitionFileTag>::Result>::Do(this->Data,
sf);
DoAccept<IsSameTag<Tag, ModuleDefinitionSourcesTag>::Result>::Do(
this->Data, sf);
if (this->IsObjLib) {
this->BadObjLibFiles.push_back(sf);
}
@@ -681,6 +681,12 @@ bool cmGeneratorTarget::HasExplicitObjectName(cmSourceFile const* file) const
return it != this->ExplicitObjectName.end();
}
void cmGeneratorTarget::GetModuleDefinitionSources(
std::vector<cmSourceFile const*>& data, const std::string& config) const
{
IMPLEMENT_VISIT(ModuleDefinitionSources);
}
void cmGeneratorTarget::GetIDLSources(std::vector<cmSourceFile const*>& data,
const std::string& config) const
{
@@ -1942,8 +1948,7 @@ cmSourceFile const* cmGeneratorTarget::GetModuleDefinitionFile(
const std::string& config) const
{
std::vector<cmSourceFile const*> data;
IMPLEMENT_VISIT_IMPL(ModuleDefinitionFile,
COMMA std::vector<cmSourceFile const*>)
this->GetModuleDefinitionSources(data, config);
if (!data.empty()) {
return data.front();
}
+2
View File
@@ -77,6 +77,8 @@ public:
bool HasExplicitObjectName(cmSourceFile const* file) const;
void AddExplicitObjectName(cmSourceFile const* sf);
void GetModuleDefinitionSources(std::vector<cmSourceFile const*>&,
const std::string& config) const;
void GetResxSources(std::vector<cmSourceFile const*>&,
const std::string& config) const;
void GetIDLSources(std::vector<cmSourceFile const*>&,
+3 -4
View File
@@ -1841,10 +1841,9 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
(*this->BuildFileStream) << cmVS10EscapeXML(obj) << "\" />\n";
}
if (cmSourceFile const* defsrc =
this->GeneratorTarget->GetModuleDefinitionFile("")) {
this->WriteSource("None", defsrc);
}
std::vector<cmSourceFile const*> defSources;
this->GeneratorTarget->GetModuleDefinitionSources(defSources, "");
this->WriteSources("None", defSources);
if (this->IsMissingFiles) {
this->WriteMissingFiles();