From 4dc2fda639adc45d16e9925be516dbdefcba1f31 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 17 Feb 2009 23:07:51 +0000 Subject: Followup to bug 567906 - Redo option filtering logic to be a bit cleaner This was suggested during a refactoring of the affected code for bug 567906. --- 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) -- cgit v0.9.1