summaryrefslogtreecommitdiffstats
path: root/native_client_sdk/src
diff options
context:
space:
mode:
authorbinji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-01 00:11:54 +0000
committerbinji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-01 00:11:54 +0000
commit1a715fa709ebac5066c23dea36a810237205b3ab (patch)
tree2959983e4fe18720c2672622776aa341a5604a6b /native_client_sdk/src
parent76b138dfbf629d47be2b355dad10265bd4b849f9 (diff)
downloadchromium_src-1a715fa709ebac5066c23dea36a810237205b3ab.zip
chromium_src-1a715fa709ebac5066c23dea36a810237205b3ab.tar.gz
chromium_src-1a715fa709ebac5066c23dea36a810237205b3ab.tar.bz2
[NaCl SDK] Don't write generated Makefile if it is identical to the existing one.
If we modify the timestamp of the Makefile, everything gets rebuilt. BUG=none R=sbc@chromium.org NOTRY=true Review URL: https://chromiumcodereview.appspot.com/12377019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185377 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk/src')
-rwxr-xr-xnative_client_sdk/src/build_tools/easy_template.py7
-rwxr-xr-xnative_client_sdk/src/build_tools/generate_make.py24
2 files changed, 27 insertions, 4 deletions
diff --git a/native_client_sdk/src/build_tools/easy_template.py b/native_client_sdk/src/build_tools/easy_template.py
index 6ef2262..b2bfa71 100755
--- a/native_client_sdk/src/build_tools/easy_template.py
+++ b/native_client_sdk/src/build_tools/easy_template.py
@@ -65,6 +65,13 @@ def RunTemplateFile(srcfile, dstfile, template_dict, statement_re=None,
RunTemplate(src, dst, template_dict, statement_re, expr_re)
+def RunTemplateString(src, template_dict, statement_re=None, expr_re=None):
+ srcf = cStringIO.StringIO(src)
+ dstf = cStringIO.StringIO()
+ RunTemplate(srcf, dstf, template_dict, statement_re, expr_re)
+ return dstf.getvalue()
+
+
def main(args):
parser = optparse.OptionParser()
_, args = parser.parse_args(args)
diff --git a/native_client_sdk/src/build_tools/generate_make.py b/native_client_sdk/src/build_tools/generate_make.py
index cc1e80f..ef37e97 100755
--- a/native_client_sdk/src/build_tools/generate_make.py
+++ b/native_client_sdk/src/build_tools/generate_make.py
@@ -3,11 +3,12 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import buildbot_common
+import cStringIO
import optparse
import os
import sys
+import buildbot_common
from buildbot_common import ErrorExit
import easy_template
from generate_index import LandingPage
@@ -52,6 +53,21 @@ def GenerateSourceCopyList(desc):
return sources
+def RunTemplateFile(srcfile, dstfile, replace):
+ dst = cStringIO.StringIO()
+ with open(srcfile) as srcf:
+ easy_template.RunTemplate(srcf, dst, replace)
+
+ if os.path.exists(dstfile):
+ with open(dstfile) as dstf:
+ if dstf.read() == dst.getvalue():
+ Trace('Generated %s is the same. Skipping' % dstfile)
+ return
+
+ with open(dstfile, 'w') as dstf:
+ dstf.write(dst.getvalue())
+
+
def GetSourcesDict(sources):
source_map = {}
for key in ['.c', '.cc']:
@@ -260,7 +276,7 @@ def ProcessHTML(srcroot, dstroot, desc, toolchains):
'data-name="%s" data-tools="%s" data-configs="%s" data-path="%s"' % (
name, ' '.join(tools), ' '.join(configs), path),
}
- easy_template.RunTemplateFile(srcfile, dstfile, replace)
+ RunTemplateFile(srcfile, dstfile, replace)
def LoadProject(filename, toolchains):
@@ -371,7 +387,7 @@ def ProcessProject(srcroot, dstroot, desc, toolchains):
'tools': tool_list,
'targets': desc['TARGETS'],
}
- easy_template.RunTemplateFile(template, make_path, template_dict)
+ RunTemplateFile(template, make_path, template_dict)
outdir = os.path.dirname(os.path.abspath(make_path))
pepperdir = os.path.dirname(os.path.dirname(outdir))
@@ -383,7 +399,7 @@ def GenerateMasterMakefile(in_path, out_path, projects):
"""Generate a Master Makefile that builds all examples. """
project_names = [project['NAME'] for project in projects]
template_dict = { 'projects': project_names }
- easy_template.RunTemplateFile(in_path, out_path, template_dict)
+ RunTemplateFile(in_path, out_path, template_dict)
outdir = os.path.dirname(os.path.abspath(out_path))
pepperdir = os.path.dirname(outdir)