summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/build/cmdline.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/python/build/cmdline.py b/python/build/cmdline.py
new file mode 100644
index 000000000..50245f597
--- /dev/null
+++ b/python/build/cmdline.py
@@ -0,0 +1,29 @@
+def concatenate_cmdline_variables(src, names):
+ """Find duplicate variable declarations on the given source list, and
+ concatenate the values of those in the 'names' list."""
+
+ # the result list being constructed
+ dest = []
+
+ # a map of variable name to destination list index
+ positions = {}
+
+ for item in src:
+ i = item.find('=')
+ if i > 0:
+ # it's a variable
+ name = item[:i]
+ if name in names:
+ # it's a known variable
+ if name in positions:
+ # already specified: concatenate instead of
+ # appending it
+ dest[positions[name]] += ' ' + item[i + 1:]
+ continue
+ else:
+ # not yet seen: append it and remember the list
+ # index
+ positions[name] = len(dest)
+ dest.append(item)
+
+ return dest