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)