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-02-06 09:52:46 +0100
commite444977ff2b1a549d060dc82f0fb0a06bf00476c (patch)
treee26b5096c730e8e30667671de482c93488218ff3
parent1d07dfad83c081212b63b148c846060fe5c10662 (diff)
build: Support conditional build dependencies
-rwxr-xr-xwscript24
1 files changed, 15 insertions, 9 deletions
diff --git a/wscript b/wscript
index a34cac51e2..4639787bb8 100755
--- a/wscript
+++ b/wscript
@@ -183,43 +183,49 @@ 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)
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)