[cmake-commits] king committed cmDependsFortran.cxx 1.33 1.34
cmLocalUnixMakefileGenerator3.cxx 1.227 1.228
cmake-commits at cmake.org
cmake-commits at cmake.org
Fri Dec 28 11:50:16 EST 2007
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv11935/Source
Modified Files:
cmDependsFortran.cxx cmLocalUnixMakefileGenerator3.cxx
Log Message:
ENH: Add per-language clean rule generation to cmake_clean.cmake files to include cmake_clean_<lang>.cmake files generated by dependency scanning. Add Fortran module file and timestamp cleaning rules.
Index: cmDependsFortran.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmDependsFortran.cxx,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- cmDependsFortran.cxx 28 Dec 2007 16:49:59 -0000 1.33
+++ cmDependsFortran.cxx 28 Dec 2007 16:50:14 -0000 1.34
@@ -219,6 +219,27 @@
{
fiStream << " " << *i << "\n";
}
+
+ // Create a script to clean the modules.
+ if(!provides.empty())
+ {
+ std::string fcName = this->TargetDirectory;
+ fcName += "/cmake_clean_Fortran.cmake";
+ cmGeneratedFileStream fcStream(fcName.c_str());
+ fcStream << "# Remove fortran modules provided by this target.\n";
+ fcStream << "FILE(REMOVE\n";
+ for(std::set<cmStdString>::const_iterator i = provides.begin();
+ i != provides.end(); ++i)
+ {
+ std::string mod_upper = cmSystemTools::UpperCase(*i);
+ std::string mod_lower = *i;
+ fcStream << " \"" << mod_lower << ".mod\""
+ << " \"" << mod_lower << ".mod.stamp\""
+ << " \"" << mod_upper << ".mod\""
+ << " \"" << mod_upper << ".mod.stamp\"\n";
+ }
+ fcStream << " )\n";
+ }
return true;
}
Index: cmLocalUnixMakefileGenerator3.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalUnixMakefileGenerator3.cxx,v
retrieving revision 1.227
retrieving revision 1.228
diff -u -d -r1.227 -r1.228
--- cmLocalUnixMakefileGenerator3.cxx 23 Dec 2007 20:03:42 -0000 1.227
+++ cmLocalUnixMakefileGenerator3.cxx 28 Dec 2007 16:50:14 -0000 1.228
@@ -1048,6 +1048,26 @@
}
fout << ")\n";
commands.push_back(remove);
+
+ // For the main clean rule add per-language cleaning.
+ if(!filename)
+ {
+ // Get the set of source languages in the target.
+ std::set<cmStdString> languages;
+ target.GetLanguages(languages);
+ fout << "\n"
+ << "# Per-language clean rules from dependency scanning.\n"
+ << "FOREACH(lang";
+ for(std::set<cmStdString>::const_iterator l = languages.begin();
+ l != languages.end(); ++l)
+ {
+ fout << " " << *l;
+ }
+ fout << ")\n"
+ << " INCLUDE(" << this->GetTargetDirectory(target)
+ << "/cmake_clean_${lang}.cmake OPTIONAL)\n"
+ << "ENDFOREACH(lang)\n";
+ }
}
}
More information about the Cmake-commits
mailing list