diff --git a/tools/toolchains/__init__.py b/tools/toolchains/__init__.py index 845312b8df..2236c20737 100644 --- a/tools/toolchains/__init__.py +++ b/tools/toolchains/__init__.py @@ -341,7 +341,7 @@ class mbedToolchain: return False - def scan_resources(self, path): + def scan_resources(self, path, exclude_paths=None): labels = self.get_labels() resources = Resources(path) self.has_config = False @@ -359,12 +359,23 @@ class mbedToolchain: for root, dirs, files in walk(path): # Remove ignored directories for d in copy(dirs): + dir_path = join(root, d) + if d == '.hg': - dir_path = join(root, d) resources.repo_dirs.append(dir_path) resources.repo_files.extend(self.scan_repository(dir_path)) + + should_exclude_path = False + + if exclude_paths: + for exclude_path in exclude_paths: + rel_path = relpath(dir_path, exclude_path) + if not (rel_path.startswith('..')): + should_exclude_path = True + break - if ((d.startswith('.') or d in self.legacy_ignore_dirs) or + if ((should_exclude_path) or + (d.startswith('.') or d in self.legacy_ignore_dirs) or (d.startswith('TARGET_') and d[7:] not in labels['TARGET']) or (d.startswith('TOOLCHAIN_') and d[10:] not in labels['TOOLCHAIN']) or (d == 'TESTS')):