summaryrefslogtreecommitdiffstats
path: root/source-builder
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2022-05-05 12:32:16 +1000
committerChris Johns <chrisj@rtems.org>2022-05-05 12:32:16 +1000
commit7d80719f7472debdf7d54a61f9ffc7fc31d57d13 (patch)
tree9b2f5518ac45ce014c60c425eb34da8f57324a88 /source-builder
parent7: Back port gcov-tool merge-stream to GCC 12 (diff)
downloadrtems-source-builder-7d80719f7472debdf7d54a61f9ffc7fc31d57d13.tar.bz2
sb/setbuilder: Control buildsets using the --with-* command line option
- Expand macros in buildset file names - Add support to buildsets for `%defineifnot` - Update 6 and 7 to support command line build overrides Closes #4646
Diffstat (limited to 'source-builder')
-rw-r--r--source-builder/sb/setbuilder.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/source-builder/sb/setbuilder.py b/source-builder/sb/setbuilder.py
index 63392fe..4d6ca81 100644
--- a/source-builder/sb/setbuilder.py
+++ b/source-builder/sb/setbuilder.py
@@ -284,6 +284,7 @@ class buildset:
line = line[1:b]
return line.strip()
+ bset = macro_expand(self.macros, bset)
bsetname = bset
if not path.exists(bsetname):
@@ -315,15 +316,22 @@ class buildset:
if ls[0][-1] == ':' and ls[0][:-1] == 'package':
self.bset_pkg = ls[1].strip()
self.macros['package'] = self.bset_pkg
- elif ls[0][0] == '%':
+ elif ls[0][0] == '%' and (len(ls[0]) > 1 and ls[0][1] != '{'):
def err(msg):
raise error.general('%s:%d: %s' % (self.bset, lc, msg))
- if ls[0] == '%define':
+ if ls[0] == '%define' or ls[0] == '%defineifnot' :
+ name = ls[1].strip()
+ value = None
if len(ls) > 2:
- self.macros.define(ls[1].strip(),
- ' '.join([f.strip() for f in ls[2:]]))
- else:
- self.macros.define(ls[1].strip())
+ value = ' '.join([f.strip() for f in ls[2:]])
+ if ls[0] == '%defineifnot':
+ if self.macros.defined(name):
+ name = None
+ if name is not None:
+ if value is not None:
+ self.macros.define(name, value)
+ else:
+ self.macros.define(name)
elif ls[0] == '%undefine':
if len(ls) > 2:
raise error.general('%s:%d: %undefine requires ' \
@@ -336,7 +344,7 @@ class buildset:
elif ls[0] == '%hash':
sources.hash(ls[1:], self.macros, err)
else:
- l = l.strip()
+ l = macro_expand(self.macros, l.strip())
c = build.find_config(l, self.configs)
if c is None:
raise error.general('%s:%d: cannot find file: %s' % (self.bset,