diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-08-19 15:54:42 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-09-22 08:28:44 +0200 |
commit | 4b2d731da1235cbfc580d5a61184a871763241f5 (patch) | |
tree | 8c89a7185787edbef705461800cdc88b0eb39a72 | |
parent | ade8d995aa74f28a664c533bf85dfab82f2be4af (diff) |
build: Support conditional build dependencies
-rwxr-xr-x | wscript | 24 |
1 files changed, 15 insertions, 9 deletions
@@ -185,44 +185,50 @@ class Item(object): self.data = data self.links = self._init_links - def _init_links(self): + def _init_links(self, enable): self._links = [] for link in self.data["links"]: - if link["role"] == "build-dependency": + if link["role"].startswith("build-dependency"): uid = link["uid"] if not os.path.isabs(uid): uid = os.path.normpath( os.path.join(os.path.dirname(self.uid), uid) ) - self._links.append(items[uid]) + if link["role"] == "build-dependency": + enabled_by = True + else: + enabled_by = link["enabled-by"] + self._links.append((enabled_by, items[uid])) self.links = self._yield_links for link in self._links: - yield link + if _is_enabled(enable, link[0]): + yield link[1] - def _yield_links(self): + def _yield_links(self, enable): for link in self._links: - yield link + if _is_enabled(enable, link[0]): + yield link[1] def get_enabled_by(self): return self.data["enabled-by"] def defaults(self, enable, variant, family): if _is_enabled(enable, self.get_enabled_by()): - for p in self.links(): + for p in self.links(enable): p.defaults(enable, variant, family) self.do_defaults(variant, family) def configure(self, conf, cic): if _is_enabled(conf.env.ENABLE, self.get_enabled_by()): self.prepare_configure(conf, cic) - for p in self.links(): + for p in self.links(conf.env.ENABLE): p.configure(conf, cic) self.do_configure(conf, cic) def build(self, bld, bic): if _is_enabled(bld.env.ENABLE, self.get_enabled_by()): bic = self.prepare_build(bld, bic) - for p in self.links(): + for p in self.links(bld.env.ENABLE): p.build(bld, bic) self.do_build(bld, bic) |