| Attached Files | object_outputs.patch [^] (3,763 bytes) 2014-01-06 17:32 [Show Content] [Hide Content]diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index c8b03e1..d8a085e 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -353,7 +353,7 @@ cmNinjaTargetGenerator
vars.CMTarget = this->GetTarget();
vars.Language = lang.c_str();
vars.Source = "$in";
- vars.Object = "$out";
+ vars.Object = "$OBJECT_FILE";
vars.Defines = "$DEFINES";
vars.TargetPDB = "$TARGET_PDB";
vars.ObjectDir = "$OBJECT_DIR";
@@ -382,7 +382,7 @@ cmNinjaTargetGenerator
mf->GetSafeDefinition("CMAKE_CXX_COMPILER");
cldeps = "\"";
cldeps += mf->GetSafeDefinition("CMAKE_CMCLDEPS_EXECUTABLE");
- cldeps += "\" " + lang + " $in \"$DEP_FILE\" $out \"";
+ cldeps += "\" " + lang + " $in \"$DEP_FILE\" $OBJECT_FILE \"";
cldeps += mf->GetSafeDefinition("CMAKE_CL_SHOWINCLUDES_PREFIX");
cldeps += "\" \"" + cl + "\" ";
}
@@ -402,7 +402,7 @@ cmNinjaTargetGenerator
if (!depfileFlags.empty())
{
cmSystemTools::ReplaceString(depfileFlags, "<DEPFILE>", "$DEP_FILE");
- cmSystemTools::ReplaceString(depfileFlags, "<OBJECT>", "$out");
+ cmSystemTools::ReplaceString(depfileFlags, "<OBJECT>", "$OBJECT_FILE");
cmSystemTools::ReplaceString(depfileFlags, "<CMAKE_C_COMPILER>",
mf->GetDefinition("CMAKE_C_COMPILER"));
flags += " " + depfileFlags;
@@ -432,7 +432,7 @@ cmNinjaTargetGenerator
cmOStringStream comment;
comment << "Rule for compiling " << lang << " files.";
cmOStringStream description;
- description << "Building " << lang << " object $out";
+ description << "Building " << lang << " object $OBJECT_FILE";
this->GetGlobalGenerator()->AddRule(this->LanguageCompilerRule(lang),
cmdLine,
description.str(),
@@ -517,6 +517,18 @@ cmNinjaTargetGenerator
// Add this object to the list of object files.
this->Objects.push_back(objectFileName);
+ if(const char* objectOutputs = source->GetProperty("OBJECT_OUTPUTS")) {
+ std::vector<std::string> outputList;
+ cmSystemTools::ExpandListArgument(objectOutputs, outputList);
+ std::transform(outputList.begin(), outputList.end(), outputList.begin(),
+ MapToNinjaPath());
+ for(std::vector<std::string>::const_iterator i = outputList.begin();
+ i != outputList.end(); ++i)
+ {
+ outputs.push_back(*i);
+ }
+ }
+
cmNinjaDeps explicitDeps;
std::string sourceFileName;
if (language == "RC")
@@ -560,6 +572,7 @@ cmNinjaTargetGenerator
}
cmNinjaVars vars;
+ vars["OBJECT_FILE"] = objectFileName;
vars["FLAGS"] = this->ComputeFlagsForObject(source, language);
vars["DEFINES"] = this->ComputeDefines(source, language);
if (needsDepFile(language)) {
@@ -632,16 +645,6 @@ cmNinjaTargetGenerator
orderOnlyDeps,
vars);
- if(const char* objectOutputs = source->GetProperty("OBJECT_OUTPUTS")) {
- std::vector<std::string> outputList;
- cmSystemTools::ExpandListArgument(objectOutputs, outputList);
- std::transform(outputList.begin(), outputList.end(), outputList.begin(),
- MapToNinjaPath());
- this->GetGlobalGenerator()->WritePhonyBuild(this->GetBuildFileStream(),
- "Additional output files.",
- outputList,
- outputs);
- }
}
//----------------------------------------------------------------------------
|