summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2012-07-15 08:56:48 (GMT)
committerRemko Tronçon <git@el-tramo.be>2012-07-15 09:38:40 (GMT)
commit8853ae3063bc9d3fb5b023352dd0fb4fb6cc277b (patch)
tree86261f1621615c340791839a434ae6162ee9baaa /BuildTools/SCons/Tools
parentb3f5d140e336e042724f2e37796d8ba50570d88c (diff)
downloadswift-8853ae3063bc9d3fb5b023352dd0fb4fb6cc277b.zip
swift-8853ae3063bc9d3fb5b023352dd0fb4fb6cc277b.tar.bz2
Provide replace_pragma_once flag.
Diffstat (limited to 'BuildTools/SCons/Tools')
-rw-r--r--BuildTools/SCons/Tools/ReplacePragmaOnce.py25
-rw-r--r--BuildTools/SCons/Tools/WriteVal.py5
2 files changed, 28 insertions, 2 deletions
diff --git a/BuildTools/SCons/Tools/ReplacePragmaOnce.py b/BuildTools/SCons/Tools/ReplacePragmaOnce.py
new file mode 100644
index 0000000..466c31e
--- /dev/null
+++ b/BuildTools/SCons/Tools/ReplacePragmaOnce.py
@@ -0,0 +1,25 @@
+import SCons.Util, os.path
+
+def generate(env) :
+ root = env.Dir("#").abspath
+ def relpath(path, start) :
+ i = len(os.path.commonprefix([path, start]))
+ return path[i+1:]
+
+ def replacePragmaOnce(env, target, source) :
+ guard = relpath(source[0].abspath, root).replace("/", "_").replace(".", "_").upper()
+ data = source[0].get_contents()
+ f = open(str(target[0]), 'wb')
+ if "#pragma once" in data :
+ f.write(data.replace("#pragma once", "#ifndef %(guard)s\n#define %(guard)s" % {"guard": guard}))
+ f.write("\n#endif\n")
+ else :
+ f.write(data)
+ f.close()
+
+ env["BUILDERS"]["ReplacePragmaOnce"] = SCons.Builder.Builder(
+ action = SCons.Action.Action(replacePragmaOnce, cmdstr = "$GENCOMSTR"),
+ single_source = True)
+
+def exists(env) :
+ return True
diff --git a/BuildTools/SCons/Tools/WriteVal.py b/BuildTools/SCons/Tools/WriteVal.py
index e39ad82..0a1e1ad 100644
--- a/BuildTools/SCons/Tools/WriteVal.py
+++ b/BuildTools/SCons/Tools/WriteVal.py
@@ -1,14 +1,15 @@
import SCons.Util
def generate(env) :
- def writeVal(env, target, source) :
+ def replacePragmaOnce(env, target, source) :
f = open(str(target[0]), 'wb')
f.write(source[0].get_contents())
f.close()
env["BUILDERS"]["WriteVal"] = SCons.Builder.Builder(
- action = SCons.Action.Action(writeVal, cmdstr = "$GENCOMSTR"),
+ action = SCons.Action.Action(replacePragmaOnce, cmdstr = "$GENCOMSTR"),
single_source = True)
def exists(env) :
return True
+