waf: reorganize recursion

That makes the code cleaner and better readable. Futhermore, it's easier to add
a pattern for recursion.

Additionally, this commit remove Tools from the exclusion list as that is not
necessary.
This commit is contained in:
Gustavo Jose de Sousa 2016-02-02 20:38:42 +00:00 committed by Lucas De Marchi
parent 9157f634eb
commit 1d92a54429
1 changed files with 37 additions and 27 deletions

64
wscript
View File

@ -151,38 +151,48 @@ def build(bld):
libraries=bld.ap_get_all_libraries(),
use='mavlink',
)
# TODO: Currently each vehicle also generate its own copy of the
# libraries. Fix this, or at least reduce the amount of
# vehicle-dependent libraries.
vehicles = collect_dirs_to_recurse(bld, '*')
common_dirs_patterns = [
# TODO: Currently each vehicle also generate its own copy of the
# libraries. Fix this, or at least reduce the amount of
# vehicle-dependent libraries.
'*',
'Tools/*',
'libraries/*/examples/*',
'**/tests',
'**/benchmarks',
]
common_dirs_excl = [
'modules',
'libraries/AP_HAL_*',
'libraries/SITL',
]
hal_dirs_patterns = [
'libraries/%s/**/tests',
'libraries/%s/**/benchmarks',
'libraries/%s/examples/*',
]
dirs_to_recurse = collect_dirs_to_recurse(
bld,
common_dirs_patterns,
excl=common_dirs_excl,
)
for p in hal_dirs_patterns:
dirs_to_recurse += collect_dirs_to_recurse(
bld,
[p % l for l in bld.env.AP_LIBRARIES],
)
# NOTE: we need to sort to ensure the repeated sources get the
# same index, and random ordering of the filesystem doesn't cause
# recompilation.
vehicles.sort()
dirs_to_recurse.sort()
tools = collect_dirs_to_recurse(bld, 'Tools/*')
examples = collect_dirs_to_recurse(bld,
'libraries/*/examples/*',
excl='libraries/AP_HAL_* libraries/SITL')
tests = collect_dirs_to_recurse(bld,
'**/tests',
excl='modules Tools libraries/AP_HAL_* libraries/SITL')
board_tests = ['libraries/%s/**/tests' % l for l in bld.env.AP_LIBRARIES]
tests.extend(collect_dirs_to_recurse(bld, board_tests))
benchmarks = collect_dirs_to_recurse(bld,
'**/benchmarks',
excl='modules Tools libraries/AP_HAL_* libraries/SITL')
board_benchmarks = ['libraries/%s/**/benchmarks' % l for l in bld.env.AP_LIBRARIES]
benchmarks.extend(collect_dirs_to_recurse(bld, board_benchmarks))
hal_examples = []
for l in bld.env.AP_LIBRARIES:
hal_examples.extend(collect_dirs_to_recurse(bld, 'libraries/' + l + '/examples/*'))
for d in vehicles + tools + examples + hal_examples + tests + benchmarks:
for d in dirs_to_recurse:
bld.recurse(d)
if bld.cmd == 'check':