summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2017-07-19 20:47:17 +0200
committerMax Kellermann <max@musicpd.org>2017-07-19 20:53:52 +0200
commit07b06d76be716fa82f18c7949c00f92208962d6a (patch)
tree128ed7f50168abb20c22bf99a2022dd99e340db1
parent856fe2da1571c7286b36065d4b846a90232f31cb (diff)
{android,win32}/build.py: concatenate variables from the command line
-rwxr-xr-xandroid/build.py4
-rw-r--r--python/build/cmdline.py29
-rwxr-xr-xwin32/build.py4
3 files changed, 37 insertions, 0 deletions
diff --git a/android/build.py b/android/build.py
index a37432e13..3ec3d9ba3 100755
--- a/android/build.py
+++ b/android/build.py
@@ -154,5 +154,9 @@ configure = [
] + configure_args
+from build.cmdline import concatenate_cmdline_variables
+configure = concatenate_cmdline_variables(configure,
+ set(('CFLAGS', 'CXXFLAGS', 'CPPFLAGS', 'LDFLAGS', 'LIBS')))
+
subprocess.check_call(configure, env=toolchain.env)
subprocess.check_call(['/usr/bin/make', '--quiet', '-j12'], env=toolchain.env)
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
diff --git a/win32/build.py b/win32/build.py
index 1a08ba97f..037d8088e 100755
--- a/win32/build.py
+++ b/win32/build.py
@@ -112,5 +112,9 @@ configure = [
] + configure_args
+from build.cmdline import concatenate_cmdline_variables
+configure = concatenate_cmdline_variables(configure,
+ set(('CFLAGS', 'CXXFLAGS', 'CPPFLAGS', 'LDFLAGS', 'LIBS')))
+
subprocess.check_call(configure, env=toolchain.env)
subprocess.check_call(['/usr/bin/make', '--quiet', '-j12'], env=toolchain.env)