aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-07-19 15:53:43 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-07-19 15:53:43 +0300
commit279dd5e809cd9bb2bcb0693bb6104a191060d4b7 (patch)
tree99b073e61c42cffc7ffe160193012d6a860c48e0
parent02cb18c93428fb881c453494b4841cd4b2896202 (diff)
downloadmeson-279dd5e809cd9bb2bcb0693bb6104a191060d4b7.zip
meson-279dd5e809cd9bb2bcb0693bb6104a191060d4b7.tar.gz
meson-279dd5e809cd9bb2bcb0693bb6104a191060d4b7.tar.bz2
Sort input files so command lines do not change. This allows Ninja to skip unnecessary build steps.
-rw-r--r--ninjabackend.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/ninjabackend.py b/ninjabackend.py
index 7ea73f1..2eaaaa1 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -67,9 +67,11 @@ class NinjaBuildElement():
self.elems.append((name, elems))
def write(self, outfile):
- line = 'build %s: %s %s' % (' '.join([ninja_quote(i) for i in self.outfilenames]),\
+ # Sort inputs so the command line does not change.
+ # This allows Ninja to skip unnecessary rebuilds.
+ line = 'build %s: %s %s' % (' '.join([ninja_quote(i) for i in self.outfilenames]),\
self.rule,
- ' '.join([ninja_quote(i) for i in self.infilenames]))
+ ' '.join([ninja_quote(i) for i in sorted(self.infilenames)]))
if len(self.deps) > 0:
line += ' | ' + ' '.join([ninja_quote(x) for x in self.deps])
if len(self.orderdeps) > 0: