aboutsummaryrefslogtreecommitdiff
path: root/builder.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-01 18:03:30 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-01 18:03:30 +0200
commit7651e8a64180d24d4da92c9c5eb1e826ee0ec5a5 (patch)
tree04a1114c53e70077252c3092de100824cc6f8f75 /builder.py
parentaa99fb0c6747995ea885c695e94279c9e14a5b22 (diff)
downloadmeson-7651e8a64180d24d4da92c9c5eb1e826ee0ec5a5.zip
meson-7651e8a64180d24d4da92c9c5eb1e826ee0ec5a5.tar.gz
meson-7651e8a64180d24d4da92c9c5eb1e826ee0ec5a5.tar.bz2
Can generate full build projects.
Diffstat (limited to 'builder.py')
-rwxr-xr-xbuilder.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/builder.py b/builder.py
index 2e21527..b32518c 100755
--- a/builder.py
+++ b/builder.py
@@ -17,7 +17,9 @@
from optparse import OptionParser
import sys, stat
import os.path
-import environment
+import environment, interpreter
+import shellgenerator
+from interpreter import InvalidCode
parser = OptionParser()
@@ -60,6 +62,16 @@ class Builder():
if self.has_builder_file(ndir2):
return (ndir2, ndir1)
raise RuntimeError('Neither directory contains a builder file %s.' % Builder.builder_filename)
+
+ def generate(self):
+ code = open(os.path.join(self.source_dir, Builder.builder_filename)).read()
+ if len(code.strip()) == 0:
+ raise interpreter.InvalidCode('Builder file is empty.')
+ assert(isinstance(code, str))
+ env = environment.Environment(self.source_dir, self.build_dir)
+ intr = interpreter.Interpreter(code)
+ g = shellgenerator.ShellGenerator(intr, env)
+ g.generate()
if __name__ == '__main__':
(options, args) = parser.parse_args(sys.argv)
@@ -74,3 +86,5 @@ if __name__ == '__main__':
builder = Builder(dir1, dir2, options)
print ('Source dir: ' + builder.source_dir)
print ('Build dir: ' + builder.build_dir)
+ builder.generate()
+