aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-09-17 18:48:26 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-09-17 18:48:26 +0300
commit384365c843ed3d3ef82ed0a9dcaf1a987134a82f (patch)
treea9a558ece9c258a793b6bbab1864aa5998740d2f /interpreter.py
parenta90bbb727784fa27beb4ff07df97b9a07b471d62 (diff)
downloadmeson-384365c843ed3d3ef82ed0a9dcaf1a987134a82f.zip
meson-384365c843ed3d3ef82ed0a9dcaf1a987134a82f.tar.gz
meson-384365c843ed3d3ef82ed0a9dcaf1a987134a82f.tar.bz2
Added outdir() method to build targets so we can make output dirs togglable.
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py30
1 files changed, 18 insertions, 12 deletions
diff --git a/interpreter.py b/interpreter.py
index 8fa55c2..264fcf6 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -449,17 +449,22 @@ class GeneratedObjectsHolder(InterpreterObject):
self.held_object = held_object
class BuildTargetHolder(InterpreterObject):
- def __init__(self, target):
+ def __init__(self, target, interp):
super().__init__()
self.held_object = target
+ self.interpreter = interp
self.methods.update({'extract_objects' : self.extract_objects_method,
'extract_all_objects' : self.extract_all_objects_method,
'get_id': self.get_id_method,
+ 'outdir' : self.outdir_method,
})
def is_cross(self):
return self.held_object.is_cross()
+ def outdir_method(self, args, kwargs):
+ return self.interpreter.backend.get_target_dir(self.held_object)
+
def extract_objects_method(self, args, kwargs):
gobjs = self.held_object.extract_objects(args)
return GeneratedObjectsHolder(gobjs)
@@ -472,20 +477,20 @@ class BuildTargetHolder(InterpreterObject):
return self.held_object.get_id()
class ExecutableHolder(BuildTargetHolder):
- def __init__(self, target):
- super().__init__(target)
+ def __init__(self, target, interp):
+ super().__init__(target, interp)
class StaticLibraryHolder(BuildTargetHolder):
- def __init__(self, target):
- super().__init__(target)
+ def __init__(self, target, interp):
+ super().__init__(target, interp)
class SharedLibraryHolder(BuildTargetHolder):
- def __init__(self, target):
- super().__init__(target)
+ def __init__(self, target, interp):
+ super().__init__(target, interp)
class JarHolder(BuildTargetHolder):
- def __init__(self, target):
- super().__init__(target)
+ def __init__(self, target, interp):
+ super().__init__(target, interp)
class CustomTargetHolder(InterpreterObject):
def __init__(self, object_to_hold):
@@ -811,8 +816,9 @@ class MesonMain(InterpreterObject):
class Interpreter():
- def __init__(self, build, subproject='', subdir='', subproject_dir='subprojects'):
+ def __init__(self, build, backend, subproject='', subdir='', subproject_dir='subprojects'):
self.build = build
+ self.backend = backend
self.subproject = subproject
self.subdir = subdir
self.source_root = build.environment.get_source_dir()
@@ -1181,7 +1187,7 @@ class Interpreter():
os.makedirs(os.path.join(self.build.environment.get_build_dir(), subdir), exist_ok=True)
self.global_args_frozen = True
mlog.log('\nExecuting subproject ', mlog.bold(dirname), '.\n', sep='')
- subi = Interpreter(self.build, dirname, subdir, self.subproject_dir)
+ subi = Interpreter(self.build, self.backend, dirname, subdir, self.subproject_dir)
subi.subprojects = self.subprojects
subi.subproject_stack = self.subproject_stack + [dirname]
@@ -1725,7 +1731,7 @@ class Interpreter():
mlog.debug('Unknown target type:', str(targetholder))
raise RuntimeError('Unreachable code')
target = targetclass(name, self.subdir, self.subproject, is_cross, sources, objs, self.environment, kwargs)
- l = targetholder(target)
+ l = targetholder(target, self)
self.add_target(name, l.held_object)
self.global_args_frozen = True
return l