From 7f7363f5f46f0e762bbaee089db9904324ce11f9 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Tue, 15 Sep 2020 11:20:44 +1000 Subject: waf: Implement module dependency checking in the build system - Do not build a test if a dependency is not enabled. - Perform a dependency check and generate an error if an enabled module depends on a disabled module. Closes #4077 --- waf_libbsd.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'waf_libbsd.py') diff --git a/waf_libbsd.py b/waf_libbsd.py index c457cbbd..558690b1 100644 --- a/waf_libbsd.py +++ b/waf_libbsd.py @@ -46,6 +46,10 @@ import builder import rtems_waf.rtems as rtems + +BUILDSET_DIR = builder.BUILDSET_DIR +BUILDSET_DEFAULT = builder.BUILDSET_DEFAULT + windows = os.name == 'nt' if windows: @@ -138,16 +142,22 @@ class Builder(builder.ModuleManager): self.data = {} - for mn in self.getEnabledModules(): + enabled_modules = self.getEnabledModules() + for mn in enabled_modules: m = self[mn] - if m.conditionalOn == "none": + enabled = True + for dep in m.dependencies: + if dep not in enabled_modules: + enabled = False + break + if enabled: for f in m.files: _dataInsert(self.data, 'all', f.getSpace(), f.getFragment()) - for cpu, files in sorted(m.cpuDependentSourceFiles.items()): - for f in files: - _dataInsert(self.data, cpu, f.getSpace(), - f.getFragment()) + for cpu, files in sorted(m.cpuDependentSourceFiles.items()): + for f in files: + _dataInsert(self.data, cpu, f.getSpace(), + f.getFragment()) # Start here if you need to understand self.data. Add 'True or' if self.trace: -- cgit v1.2.3