summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalVisualStudio7Generator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-08-22 14:37:55 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2014-08-22 14:37:55 (GMT)
commit8c30014982345567b80ec0dad6bd9eb40dfda505 (patch)
treeeb404629813faddbcafa301d87d10151a94e03cc /Source/cmLocalVisualStudio7Generator.cxx
parentb4d3e7a7b0b4b9bdff55249633d902a35f26c02a (diff)
parentcbd1d42b34bf83ca24de1b98c5963a2941206300 (diff)
downloadCMake-8c30014982345567b80ec0dad6bd9eb40dfda505.zip
CMake-8c30014982345567b80ec0dad6bd9eb40dfda505.tar.gz
CMake-8c30014982345567b80ec0dad6bd9eb40dfda505.tar.bz2
Merge topic 'vs-masm'
cbd1d42b Help: Add notes for topic 'vs-masm' 0f8522a6 VS: Add MASM support to VS 8 and 9 (#8170, #14984) a43f4400 VS: Move internal MasmEnabled member up to VS 7 generator df3b007d VS: Add test for MASM support e8727449 VS: Populate MASM tool build settings in .vcxproj files 0271a5f9 VS: Manually fix MASM flag table entries 1d662e48 VS: Generate MASM flag tables from MSBuild tool files 4f6940df VS: Fix ASM_MASM support in VS >= 10 d7866c52 ASM_MASM: Fix selection of ml64 0374abdb ASM_MASM: Add preprocessor definitions to compile lines 5b0a46e1 ASM_MASM: Do not require compiler to be a full path 802dbe52 cmLocalVisualStudio7Generator: Rename local 'lang' var
Diffstat (limited to 'Source/cmLocalVisualStudio7Generator.cxx')
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx57
1 files changed, 54 insertions, 3 deletions
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index 3ed4a48..11a9627 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -44,6 +44,16 @@ private:
extern cmVS7FlagTable cmLocalVisualStudio7GeneratorFlagTable[];
+static void cmConvertToWindowsSlash(std::string& s)
+{
+ std::string::size_type pos = 0;
+ while((pos = s.find('/', pos)) != std::string::npos)
+ {
+ s[pos] = '\\';
+ pos++;
+ }
+}
+
//----------------------------------------------------------------------------
cmLocalVisualStudio7Generator::cmLocalVisualStudio7Generator(VSVersion v):
cmLocalVisualStudioGenerator(v)
@@ -862,6 +872,31 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
}
}
fout << "/>\n"; // end of <Tool Name=VCCLCompilerTool
+ if(gg->IsMasmEnabled() && !this->FortranProject)
+ {
+ Options masmOptions(this, Options::MasmCompiler, 0, 0);
+ fout <<
+ "\t\t\t<Tool\n"
+ "\t\t\t\tName=\"MASM\"\n"
+ "\t\t\t\tIncludePaths=\""
+ ;
+ const char* sep = "";
+ for(i = includes.begin(); i != includes.end(); ++i)
+ {
+ std::string inc = *i;
+ cmConvertToWindowsSlash(inc);
+ fout << sep << this->EscapeForXML(inc);
+ sep = ";";
+ }
+ fout << "\"\n";
+ // Use same preprocessor definitions as VCCLCompilerTool.
+ targetOptions.OutputPreprocessorDefinitions(fout, "\t\t\t\t", "\n",
+ "ASM_MASM");
+ masmOptions.OutputFlagMap(fout, "\t\t\t\t");
+ fout <<
+ "\t\t\t\tObjectFile=\"$(IntDir)\\\"\n"
+ "\t\t\t/>\n";
+ }
tool = "VCCustomBuildTool";
if(this->FortranProject)
{
@@ -1695,11 +1730,12 @@ bool cmLocalVisualStudio7Generator
else if(!fcinfo.FileConfigMap.empty())
{
const char* aCompilerTool = "VCCLCompilerTool";
- const char* lang = "CXX";
+ const char* ppLang = "CXX";
if(this->FortranProject)
{
aCompilerTool = "VFFortranCompilerTool";
}
+ std::string const& lang = (*sf)->GetLanguage();
std::string ext = (*sf)->GetExtension();
ext = cmSystemTools::LowerCase(ext);
if(ext == "idl")
@@ -1713,7 +1749,7 @@ bool cmLocalVisualStudio7Generator
if(ext == "rc")
{
aCompilerTool = "VCResourceCompilerTool";
- lang = "RC";
+ ppLang = "RC";
if(this->FortranProject)
{
aCompilerTool = "VFResourceCompilerTool";
@@ -1727,6 +1763,11 @@ bool cmLocalVisualStudio7Generator
aCompilerTool = "VFCustomBuildTool";
}
}
+ if (gg->IsMasmEnabled() && !this->FortranProject &&
+ lang == "ASM_MASM")
+ {
+ aCompilerTool = "MASM";
+ }
for(std::map<std::string, cmLVS7GFileConfig>::const_iterator
fci = fcinfo.FileConfigMap.begin();
fci != fcinfo.FileConfigMap.end(); ++fci)
@@ -1763,7 +1804,7 @@ bool cmLocalVisualStudio7Generator
fileOptions.OutputFlagMap(fout, "\t\t\t\t\t");
fileOptions.OutputPreprocessorDefinitions(fout,
"\t\t\t\t\t", "\n",
- lang);
+ ppLang);
}
if(!fc.AdditionalDeps.empty())
{
@@ -2095,6 +2136,16 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
<< "\t<Platforms>\n"
<< "\t\t<Platform\n\t\t\tName=\"" << gg->GetPlatformName() << "\"/>\n"
<< "\t</Platforms>\n";
+ if(gg->IsMasmEnabled())
+ {
+ fout <<
+ "\t<ToolFiles>\n"
+ "\t\t<DefaultToolFile\n"
+ "\t\t\tFileName=\"masm.rules\"\n"
+ "\t\t/>\n"
+ "\t</ToolFiles>\n"
+ ;
+ }
}