diff options
-rwxr-xr-x | tools/g-ir-scanner | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/tools/g-ir-scanner b/tools/g-ir-scanner index 6b31925..0cf54ce 100755 --- a/tools/g-ir-scanner +++ b/tools/g-ir-scanner @@ -194,6 +194,14 @@ def validate(assertions, path): f.close() print "=== PASSED %s ===" % (assertions, ) return 0 + +def process_options(output, allowed_flags): + for option in output.split(): + for flag in allowed_flags: + if not option.startswith(flag): + continue + yield option + break def process_packages(parser, options, packages): args = ['pkg-config', '--cflags'] @@ -206,14 +214,8 @@ def process_packages(parser, options, packages): sys.exit(1) # Some pkg-config files on Windows have options we don't understand, # so we explicitly filter to only the ones we need. - options_whitelist = ['-I', '-D', '-U', '-l', '-L'] - def filter_option(opt): - for optstart in options_whitelist: - if opt.startswith(optstart): - return True - return False - output = output.split() - filtered_output = filter(filter_option, output) + options_whitelist = ['-I', '-D', '-U', '-l', '-L'] + filtered_output = list(process_options(output, options_whitelist)) pkg_options, unused = parser.parse_args(filtered_output) options.cpp_includes.extend(pkg_options.cpp_includes) options.cpp_defines.extend(pkg_options.cpp_defines) @@ -225,8 +227,7 @@ def process_packages(parser, options, packages): stdout=subprocess.PIPE).communicate()[0] if output is None: sys.exit(1) - output = output.split() - filtered_output = filter(filter_option, output) + filtered_output = list(process_options(output, options_whitelist)) pkg_options, unused = parser.parse_args(filtered_output) options.library_paths.extend(pkg_options.library_paths) |