summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-08-19 15:54:42 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-09-28 09:21:23 +0200
commitd6aa3e892d66630e7c59dee9667d01fa52a225c1 (patch)
treed94358c65d0e77b5e24a5a9c39ff656d071c410e
parentcffecafa9a538a80aed47f25e0232c3d0151f396 (diff)
build: Support conditional build dependencies
-rwxr-xr-xwscript24
1 files changed, 15 insertions, 9 deletions
diff --git a/wscript b/wscript
index 4071cc9ef8..e8f95379a1 100755
--- a/wscript
+++ b/wscript
@@ -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)