aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-13 17:41:47 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-13 17:41:47 +0200
commit79c9e1e1722cdb71e9bb6c4a3c89424879293dfb (patch)
tree2c6e6eb386037d16e5ec0d0ce3a1b02f4600480c /interpreter.py
parent5969b1ed334454ff6907c521493d635bfb878456 (diff)
downloadmeson-79c9e1e1722cdb71e9bb6c4a3c89424879293dfb.zip
meson-79c9e1e1722cdb71e9bb6c4a3c89424879293dfb.tar.gz
meson-79c9e1e1722cdb71e9bb6c4a3c89424879293dfb.tar.bz2
Start work on descending to subdirectories.
Diffstat (limited to 'interpreter.py')
-rwxr-xr-xinterpreter.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/interpreter.py b/interpreter.py
index 8969d68..8268d2e 100755
--- a/interpreter.py
+++ b/interpreter.py
@@ -17,6 +17,7 @@
import parser
import nodes
import environment
+import os
class InterpreterException(Exception):
pass
@@ -168,6 +169,7 @@ class Interpreter():
self.variables = {}
self.environment = build.environment
self.build_func_dict()
+ self.subdir = ''
def build_func_dict(self):
self.funcs = {'project' : self.func_project,
@@ -178,7 +180,8 @@ class Interpreter():
'shared_library' : self.func_shared_lib,
'add_test' : self.func_add_test,
'headers' : self.func_headers,
- 'man' : self.func_man
+ 'man' : self.func_man,
+ 'subdir' : self.func_subdir
}
def sanity_check_ast(self):
@@ -285,6 +288,16 @@ class Interpreter():
m = Man(args)
self.build.man.append(m)
return m
+
+ def func_subdir(self, node, args):
+ self.validate_arguments(args, 1, [str])
+ prev_subdir = self.subdir
+ self.subdir = os.path.join(prev_subdir, args[0])
+ buildfilename = os.path.join(self.subdir, environment.builder_filename)
+ code = open(os.path.join(self.environment.get_source_dir(), buildfilename)).read()
+ assert(isinstance(code, str))
+ print('Going to subdirectory "%s".' % self.subdir)
+ self.subdir = prev_subdir
def build_target(self, node, args, targetclass):
for a in args: