summaryrefslogtreecommitdiffstats
path: root/Source/cmNinjaNormalTargetGenerator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmNinjaNormalTargetGenerator.cxx')
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx20
1 files changed, 14 insertions, 6 deletions
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index 12e871f..22f77f0 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -479,14 +479,13 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
if (targetOutput == targetOutputReal) {
vars["POST_BUILD"] = postBuildCmdLine;
+ if (preLinkCmdLines.empty()) {
+ // rule with PRE_LINK will be selected, feed it
+ vars["PRE_LINK"] = locGtor->nopCommand();
+ }
} else {
- vars["POST_BUILD"] = ":";
symlinkVars["POST_BUILD"] = postBuildCmdLine;
}
- if (preLinkCmdLines.empty()) {
- // rule with PRE_LINK will be selected, feed it
- vars["PRE_LINK"] = locGtor->nopCommand();
- }
}
bool suppressShell = preLinkCmdLines.empty() && postBuildCmdLines.empty();
@@ -496,7 +495,16 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
cmdLineLimit = 8000;
#else
// cmdLineLimit = ?? TODO
- suppressShell = true;
+ suppressShell = false;
+
+ // TODO also use _NOSHELL rule
+ if (vars.find("PRE_LINK") == vars.end())
+ vars["PRE_LINK"] = locGtor->nopCommand();
+ if (vars.find("POST_BUILD") == vars.end())
+ vars["POST_BUILD"] = locGtor->nopCommand();
+ if (targetOutput != targetOutputReal &&
+ symlinkVars.find("POST_BUILD") == symlinkVars.end())
+ symlinkVars["POST_BUILD"] = locGtor->nopCommand();
#endif
// Write the build statement for this target.
cmGlobalNinjaGenerator::WriteBuild(this->GetBuildFileStream(),