From 143b40051a71c2f53e487be69069f1932ccc25d1 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 29 Jul 2014 13:26:19 -0400 Subject: VS: Convert 'WriteSource' tool argument to std::string --- Source/cmVisualStudio10TargetGenerator.cxx | 8 ++++---- Source/cmVisualStudio10TargetGenerator.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 5674317..ca6c41e 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -998,7 +998,7 @@ WriteGroupSources(const char* name, } void cmVisualStudio10TargetGenerator::WriteSource( - const char* tool, cmSourceFile const* sf, const char* end) + std::string const& tool, cmSourceFile const* sf, const char* end) { // Visual Studio tools append relative paths to the current dir, as in: // @@ -1055,7 +1055,7 @@ void cmVisualStudio10TargetGenerator::WriteSource( } void cmVisualStudio10TargetGenerator::WriteSources( - const char* tool, std::vector const& sources) + std::string const& tool, std::vector const& sources) { for(std::vector::const_iterator si = sources.begin(); si != sources.end(); ++si) @@ -1086,7 +1086,7 @@ void cmVisualStudio10TargetGenerator::WriteAllSources() si != objectSources.end(); ++si) { const std::string& lang = (*si)->GetLanguage(); - const char* tool = NULL; + std::string tool; if (lang == "C"|| lang == "CXX") { tool = "ClCompile"; @@ -1101,7 +1101,7 @@ void cmVisualStudio10TargetGenerator::WriteAllSources() tool = "ResourceCompile"; } - if (tool) + if (!tool.empty()) { this->WriteSource(tool, *si, " "); if (this->OutputSourceSpecificFlags(*si)) diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 7a329cb..23d86da 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -57,9 +57,9 @@ private: void WriteProjectConfigurations(); void WriteProjectConfigurationValues(); void WriteMSToolConfigurationValues(std::string const& config); - void WriteSource(const char* tool, cmSourceFile const* sf, + void WriteSource(std::string const& tool, cmSourceFile const* sf, const char* end = 0); - void WriteSources(const char* tool, + void WriteSources(std::string const& tool, std::vector const&); void WriteAllSources(); void WriteDotNetReferences(); -- cgit v0.12 From 2df389115e7636756cd1f1d6c422651b4899522d Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 29 Jul 2014 13:32:22 -0400 Subject: VS: Refactor handling of "extra" sources in VS >= 10 Create a WriteExtraSource method to handle writing of sources not classified by cmGeneratorTarget for any particular purpose. This will be useful to add special VS-specific handling for some sources. --- Source/cmVisualStudio10TargetGenerator.cxx | 11 ++++++++++- Source/cmVisualStudio10TargetGenerator.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index ca6c41e..d50bdde 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -997,6 +997,11 @@ WriteGroupSources(const char* name, this->WriteString("\n", 1); } +void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf) +{ + this->WriteSource("None", sf); +} + void cmVisualStudio10TargetGenerator::WriteSource( std::string const& tool, cmSourceFile const* sf, const char* end) { @@ -1157,7 +1162,11 @@ void cmVisualStudio10TargetGenerator::WriteAllSources() std::vector extraSources; this->GeneratorTarget->GetExtraSources(extraSources, ""); - this->WriteSources("None", extraSources); + for(std::vector::const_iterator + si = extraSources.begin(); si != extraSources.end(); ++si) + { + this->WriteExtraSource(*si); + } // Add object library contents as external objects. std::vector objs; diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 23d86da..8966f93 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -57,6 +57,7 @@ private: void WriteProjectConfigurations(); void WriteProjectConfigurationValues(); void WriteMSToolConfigurationValues(std::string const& config); + void WriteExtraSource(cmSourceFile const* sf); void WriteSource(std::string const& tool, cmSourceFile const* sf, const char* end = 0); void WriteSources(std::string const& tool, -- cgit v0.12 From c2ef6d238a5e30234756a38943436e326b986b58 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 29 Jul 2014 13:36:53 -0400 Subject: VS: Refactor handling of "header" sources in VS >= 10 Create a WriteHeaderSource method to handle writing of sources classified by cmGeneratorTarget as header files. This will be useful to add special VS-specific handling for some headers. --- Source/cmVisualStudio10TargetGenerator.cxx | 11 ++++++++++- Source/cmVisualStudio10TargetGenerator.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index d50bdde..22e2461 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -997,6 +997,11 @@ WriteGroupSources(const char* name, this->WriteString("\n", 1); } +void cmVisualStudio10TargetGenerator::WriteHeaderSource(cmSourceFile const* sf) +{ + this->WriteSource("ClInclude", sf); +} + void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf) { this->WriteSource("None", sf); @@ -1079,7 +1084,11 @@ void cmVisualStudio10TargetGenerator::WriteAllSources() std::vector headerSources; this->GeneratorTarget->GetHeaderSources(headerSources, ""); - this->WriteSources("ClInclude", headerSources); + for(std::vector::const_iterator + si = headerSources.begin(); si != headerSources.end(); ++si) + { + this->WriteHeaderSource(*si); + } std::vector idlSources; this->GeneratorTarget->GetIDLSources(idlSources, ""); this->WriteSources("Midl", idlSources); diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 8966f93..7436372 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -57,6 +57,7 @@ private: void WriteProjectConfigurations(); void WriteProjectConfigurationValues(); void WriteMSToolConfigurationValues(std::string const& config); + void WriteHeaderSource(cmSourceFile const* sf); void WriteExtraSource(cmSourceFile const* sf); void WriteSource(std::string const& tool, cmSourceFile const* sf, const char* end = 0); -- cgit v0.12 From 15fb102278c1cf9141e42174d89bbfe5ef26f634 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 29 Jul 2014 13:41:17 -0400 Subject: VS: Refactor handling of resx headers Move generation of the ClInclude element to WriteHeaderSource. --- Source/cmVisualStudio10TargetGenerator.cxx | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 22e2461..872f187 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -999,7 +999,16 @@ WriteGroupSources(const char* name, void cmVisualStudio10TargetGenerator::WriteHeaderSource(cmSourceFile const* sf) { - this->WriteSource("ClInclude", sf); + if(this->IsResxHeader(sf->GetFullPath())) + { + this->WriteSource("ClInclude", sf, ">\n"); + this->WriteString("CppForm\n", 3); + this->WriteString("\n", 2); + } + else + { + this->WriteSource("ClInclude", sf); + } } void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf) @@ -1046,19 +1055,8 @@ void cmVisualStudio10TargetGenerator::WriteSource( this->ConvertToWindowsSlash(sourceFile); this->WriteString("<", 2); (*this->BuildFileStream ) << tool << " Include=\"" - << cmVS10EscapeXML(sourceFile) << "\""; - - if(sf->GetExtension() == "h" && - this->IsResxHeader(sf->GetFullPath())) - { - (*this->BuildFileStream ) << ">\n"; - this->WriteString("CppForm\n", 3); - this->WriteString("\n", 2); - } - else - { - (*this->BuildFileStream ) << (end? end : " />\n"); - } + << cmVS10EscapeXML(sourceFile) << "\"" + << (end? end : " />\n"); ToolSource toolSource = {sf, forceRelative}; this->Tools[tool].push_back(toolSource); -- cgit v0.12 From 972cf1d7afd1476c550ca0503d75ec93bd764124 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 29 Jul 2014 13:43:35 -0400 Subject: VS: Map .appxmanifest sources to AppxManifest tool Inspired-by: Minmin Gong --- Source/cmVisualStudio10TargetGenerator.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 872f187..50c303f 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1013,7 +1013,13 @@ void cmVisualStudio10TargetGenerator::WriteHeaderSource(cmSourceFile const* sf) void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf) { - this->WriteSource("None", sf); + std::string tool = "None"; + std::string const& ext = sf->GetExtension(); + if(ext == "appxmanifest") + { + tool = "AppxManifest"; + } + this->WriteSource(tool, sf); } void cmVisualStudio10TargetGenerator::WriteSource( -- cgit v0.12 From 58bb14d4ac64686923d69bf515e8700f095c4ff5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 29 Jul 2014 13:45:23 -0400 Subject: VS: Map .xml to XML tool Inspired-by: Gilles Khouzam --- Source/cmVisualStudio10TargetGenerator.cxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 50c303f..b294e68 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1019,6 +1019,10 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf) { tool = "AppxManifest"; } + else if(ext == "xml") + { + tool = "XML"; + } this->WriteSource(tool, sf); } -- cgit v0.12 From 0ac28adc01c68bb9c11a34af122bac0071733965 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 29 Jul 2014 13:52:42 -0400 Subject: VS: Map .jpg and .png sources to Image tool Inspired-by: Gilles Khouzam --- Source/cmVisualStudio10TargetGenerator.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index b294e68..d9013e0 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1019,6 +1019,11 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf) { tool = "AppxManifest"; } + else if(ext == "jpg" || + ext == "png") + { + tool = "Image"; + } else if(ext == "xml") { tool = "XML"; -- cgit v0.12