You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.7 KiB
65 lines
1.7 KiB
#!/usr/bin/env python |
|
# -*- encoding: utf-8 -*- |
|
# Michel Mooij, michel.mooij7@gmail.com |
|
|
|
from waflib import Utils |
|
from waflib import Errors |
|
|
|
|
|
def get_deps(bld, target): |
|
'''Returns a list of (nested) targets on which this target depends. |
|
|
|
:param bld: a *waf* build instance from the top level *wscript* |
|
:type bld: waflib.Build.BuildContext |
|
:param target: task name for which the dependencies should be returned |
|
:type target: str |
|
:returns: a list of task names on which the given target depends |
|
''' |
|
try: |
|
tgen = bld.get_tgen_by_name(target) |
|
except Errors.WafError: |
|
return [] |
|
else: |
|
uses = Utils.to_list(getattr(tgen, 'use', [])) |
|
deps = uses[:] |
|
for use in uses: |
|
deps += get_deps(bld, use) |
|
return list(set(deps)) |
|
|
|
|
|
def get_tgens(bld, names): |
|
'''Returns a list of task generators based on the given list of task |
|
generator names. |
|
|
|
:param bld: a *waf* build instance from the top level *wscript* |
|
:type bld: waflib.Build.BuildContext |
|
:param names: list of task generator names |
|
:type names: list of str |
|
:returns: list of task generators |
|
''' |
|
tgens=[] |
|
for name in names: |
|
try: |
|
tgen = bld.get_tgen_by_name(name) |
|
except Errors.WafError: |
|
pass |
|
else: |
|
tgens.append(tgen) |
|
return list(set(tgens)) |
|
|
|
|
|
def get_targets(bld): |
|
'''Returns a list of user specified build targets or None if no specific |
|
build targets has been selected using the *--targets=* command line option. |
|
|
|
:param bld: a *waf* build instance from the top level *wscript*. |
|
:type bld: waflib.Build.BuildContext |
|
:returns: a list of user specified target names (using --targets=x,y,z) or None |
|
''' |
|
if bld.targets == '': |
|
return None |
|
targets = bld.targets.split(',') |
|
for target in targets: |
|
targets += get_deps(bld, target) |
|
return targets |
|
|
|
|