aboutsummaryrefslogtreecommitdiff
path: root/build.py
diff options
context:
space:
mode:
Diffstat (limited to 'build.py')
-rw-r--r--build.py32
1 files changed, 24 insertions, 8 deletions
diff --git a/build.py b/build.py
index 89103d5..9f14a21 100644
--- a/build.py
+++ b/build.py
@@ -248,14 +248,17 @@ class BuildTarget():
if 'link_with' in self.kwargs:
self.kwargs['link_with'] = self.unpack_holder(self.kwargs['link_with'])
- def extract_objects(self, srclist):
+ def extract_objects(self, srcargs):
obj_src = []
- for src in srclist:
- if not isinstance(src, str):
- raise coredata.MesonException('Extraction arguments must be strings.')
- if src not in self.sources:
- raise coredata.MesonException('Tried to extract unknown source %s.' % src)
- obj_src.append(src)
+ for srclist in srcargs:
+ if not isinstance(srclist, list):
+ srclist = [srclist]
+ for src in srclist:
+ if not isinstance(src, str):
+ raise coredata.MesonException('Extraction arguments must be strings.')
+ if src not in self.sources:
+ raise coredata.MesonException('Tried to extract unknown source %s.' % src)
+ obj_src.append(src)
return ExtractedObjects(self, obj_src)
def get_rpaths(self):
@@ -552,6 +555,7 @@ class GeneratedList():
self.infilelist = []
self.outfilelist = []
self.outmap = {}
+ self.extra_depends = []
def add_file(self, newfile):
self.infilelist.append(newfile)
@@ -665,11 +669,14 @@ class CustomTarget:
'command' : True,
'install' : True,
'install_dir' : True,
- 'build_always' : True}
+ 'build_always' : True,
+ 'depends' : True}
+
def __init__(self, name, subdir, kwargs):
self.name = name
self.subdir = subdir
self.dependencies = []
+ self.extra_depends = []
self.process_kwargs(kwargs)
self.extra_files = []
self.install_rpath = ''
@@ -741,6 +748,15 @@ class CustomTarget:
self.build_always = kwargs.get('build_always', False)
if not isinstance(self.build_always, bool):
raise InvalidArguments('Argument build_always must be a boolean.')
+ extra_deps = kwargs.get('depends', [])
+ if not isinstance(extra_deps, list):
+ extra_deps = [extra_deps]
+ for ed in extra_deps:
+ while hasattr(ed, 'held_object'):
+ ed = ed.held_object
+ if not isinstance(ed, CustomTarget) and not isinstance(ed, BuildTarget):
+ raise InvalidArguments('Can only depend on toplevel targets.')
+ self.extra_depends.append(ed)
def get_basename(self):
return self.name