aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'interpreter.py')
-rwxr-xr-xinterpreter.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/interpreter.py b/interpreter.py
index f651bdd..dad45ee 100755
--- a/interpreter.py
+++ b/interpreter.py
@@ -39,9 +39,11 @@ class BuildTarget(InterpreterObject):
self.sources = sources
self.external_deps = []
self.methods = {'add_dep': self.add_dep_method,
- 'link' : self.link_method}
+ 'link' : self.link_method,
+ 'install': self.install}
self.link_targets = []
self.filename = 'no_name'
+ self.need_install = False
def get_filename(self):
return self.filename
@@ -54,7 +56,10 @@ class BuildTarget(InterpreterObject):
def get_sources(self):
return self.sources
-
+
+ def should_install(self):
+ return self.need_install
+
def add_external_dep(self, dep):
if not isinstance(dep, environment.PkgConfigDependency):
raise InvalidArguments('Argument is not an external dependency')
@@ -78,6 +83,10 @@ class BuildTarget(InterpreterObject):
return self.methods[method_name](args)
raise InvalidCode('Unknown method "%s" in BuildTarget.' % method_name)
+ def install(self, args):
+ if len(args) != 0:
+ raise InvalidArguments('Install() takes no arguments.')
+ self.need_install = True
class Executable(BuildTarget):
def __init__(self, name, sources, environment):
@@ -95,6 +104,7 @@ class StaticLibrary(BuildTarget):
suffix = environment.get_static_lib_suffix()
self.filename = prefix + self.name + '.' + suffix
+
class SharedLibrary(BuildTarget):
def __init__(self, name, sources, environment):
BuildTarget.__init__(self, name, sources)
@@ -102,6 +112,7 @@ class SharedLibrary(BuildTarget):
suffix = environment.get_shared_lib_suffix()
self.filename = prefix + self.name + '.' + suffix
+
class Test(InterpreterObject):
def __init__(self, name, exe):
InterpreterObject.__init__(self)
@@ -229,6 +240,8 @@ class Interpreter():
raise InvalidArguments('Line %d: Argument %s is not a string.' % (node.lineno(), str(a)))
name= args[0]
sources = args[1:]
+ if len(sources) == 0:
+ raise InvalidArguments('Line %d: target has no source files.' % node.lineno())
if name in self.build.targets:
raise InvalidCode('Line %d: tried to create target "%s", but a target of that name already exists.' % (node.lineno(), name))
l = targetclass(name, sources, self.environment)