aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-03-01 20:49:46 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-03-01 20:49:46 +0200
commit226f063edb553ad6192edb7a62469f30c155c5a1 (patch)
tree44618118701c73807e21505ae79a0c19186014ce /interpreter.py
parentd74a216d9fa45450c4fbf3ea94e5e0ef5fa524a6 (diff)
downloadmeson-226f063edb553ad6192edb7a62469f30c155c5a1.zip
meson-226f063edb553ad6192edb7a62469f30c155c5a1.tar.gz
meson-226f063edb553ad6192edb7a62469f30c155c5a1.tar.bz2
Reworked how sources are passed to BuildTargets.
Diffstat (limited to 'interpreter.py')
-rwxr-xr-xinterpreter.py39
1 files changed, 20 insertions, 19 deletions
diff --git a/interpreter.py b/interpreter.py
index 3cdf8c4..37b951f 100755
--- a/interpreter.py
+++ b/interpreter.py
@@ -233,7 +233,7 @@ class BuildTarget(InterpreterObject):
InterpreterObject.__init__(self)
self.name = name
self.subdir = subdir
- self.sources = sources
+ self.sources = []
self.external_deps = []
self.include_dirs = []
self.link_targets = []
@@ -242,7 +242,21 @@ class BuildTarget(InterpreterObject):
self.pch = []
self.extra_args = {}
self.generated = []
+ self.process_sourcelist(sources)
self.process_kwargs(kwargs)
+ if len(self.sources) == 0:
+ raise InvalidArguments('Build target %s has no sources.' % name)
+
+ def process_sourcelist(self, sources):
+ if not isinstance(sources, list):
+ sources = [sources]
+ for s in sources:
+ if isinstance(s, str):
+ self.sources.append(s)
+ elif isinstance(s, GeneratedList):
+ self.generated.append(s)
+ else:
+ raise InvalidArguments('Bad source in target %s.' % self.name)
def process_kwargs(self, kwargs):
self.need_install = kwargs.get('install', self.need_install)
@@ -275,10 +289,6 @@ class BuildTarget(InterpreterObject):
if not isinstance(deplist, list):
deplist = [deplist]
self.add_external_deps(deplist)
- genlist = kwargs.get('gen_src', [])
- if not isinstance(genlist, list):
- genlist = [genlist]
- self.set_generated(genlist)
def get_subdir(self):
return self.subdir
@@ -695,25 +705,16 @@ class Interpreter():
def build_target(self, node, args, kwargs, targetclass):
args = self.flatten(args)
- for a in args:
- if not isinstance(a, str):
- raise InvalidArguments('Line %d: Argument %s is not a string.' % (node.lineno(), str(a)))
+ print(args)
name = args[0]
- sources = []
- for s in args[1:]:
- if not self.environment.is_header(s):
- sources.append(s)
+ sources = args[1:]
try:
kw_src = self.flatten(kwargs['sources'])
+ if not isinstance(kw_src, list):
+ kw_src = [kw_src]
except KeyError:
kw_src = []
- if not isinstance(kw_src, list):
- kw_src = [kw_src]
- for s in kw_src:
- if not self.environment.is_header(s):
- sources.append(s)
- if len(sources) == 0:
- raise InvalidArguments('Line %d: target has no source files.' % node.lineno())
+ sources += kw_src
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, self.subdir, sources, self.environment, kwargs)