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>2023-07-25 10:48:14 +0200
commit79b3b942df3038f393349d531ada54173ec5008c (patch)
tree8db13ae8ae6b215515551d21d9db8654d0450a78
parentb46bef3fec87d2834952493d9550dd29729e12fa (diff)
build: Support conditional build dependencies
-rwxr-xr-xwscript24
1 files changed, 15 insertions, 9 deletions
diff --git a/wscript b/wscript
index 862000513d..d63d25223c 100755
--- a/wscript
+++ b/wscript
@@ -183,36 +183,42 @@ class Item(object):
self.data = data
self.links = self._init_links
- def _init_links(self):
+ def _init_links(self, enabled):
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(enabled, link[0]):
+ yield link[1]
- def _yield_links(self):
+ def _yield_links(self, enabled):
for link in self._links:
- yield link
+ if _is_enabled(enabled, link[0]):
+ yield link[1]
def get_enabled_by(self):
return self.data["enabled-by"]
def defaults(self, enabled):
if _is_enabled(enabled, self.get_enabled_by()):
- for p in self.links():
+ for p in self.links(enabled):
p.defaults(enabled)
self.do_defaults(enabled)
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)
try:
self.do_configure(conf, cic)
@@ -224,7 +230,7 @@ class Item(object):
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)
try:
self.do_build(bld, bic)