| Index: build/gyp_chromium
|
| diff --git a/build/gyp_chromium b/build/gyp_chromium
|
| index 0d0d75ddd4ff3eeb78d7a6419c5a03cd080896c6..69dcddae4211b99efbad93681cc9cb0b7781384f 100755
|
| --- a/build/gyp_chromium
|
| +++ b/build/gyp_chromium
|
| @@ -21,23 +21,45 @@ import gyp
|
| if __name__ == '__main__':
|
| args = sys.argv[1:]
|
|
|
| + # This could give false positives since it doesn't actually do real option
|
| + # parsing. Oh well.
|
| + gyp_file_specified = False
|
| + for arg in args:
|
| + if arg.endswith('.gyp'):
|
| + gyp_file_specified = True
|
| + break
|
| +
|
| # If we didn't get a file, check an env var, and then fall back to
|
| # assuming 'all.gyp' from the same directory as the script.
|
| - gyp_file = os.environ.get('CHROMIUM_GYP_FILE')
|
| - if gyp_file:
|
| - # Note that CHROMIUM_GYP_FILE values can't have backslashes as
|
| - # path separators even on Windows due to the use of shlex.split().
|
| - args.extend(shlex.split(gyp_file))
|
| - else:
|
| - args.append(os.path.join(script_dir, 'all.gyp'))
|
| + if not gyp_file_specified:
|
| + gyp_file = os.environ.get('CHROMIUM_GYP_FILE')
|
| + if gyp_file:
|
| + # Note that CHROMIUM_GYP_FILE values can't have backslashes as
|
| + # path separators even on Windows due to the use of shlex.split().
|
| + args.extend(shlex.split(gyp_file))
|
| + else:
|
| + args.append(os.path.join(script_dir, 'all.gyp'))
|
| +
|
| + # Avoid duplicating an include that's already in the command line. This
|
| + # doesn't cover all the different option formats you can use, but it's mainly
|
| + # intended to avoid duplicating flags on the automatic makefile regeneration
|
| + # which only uses this format.
|
| + specified_includes = set()
|
| + for arg in args:
|
| + if arg.startswith('-I') and len(arg) > 2:
|
| + specified_includes.add(os.path.realpath(arg[2:]))
|
| +
|
| + def AddInclude(path):
|
| + if os.path.realpath(path) not in specified_includes:
|
| + args.append('-I' + path)
|
|
|
| # Always include common.gypi
|
| - args += ['-I', os.path.join(script_dir, 'common.gypi')]
|
| + AddInclude(os.path.join(script_dir, 'common.gypi'))
|
|
|
| # Optionally add supplemental .gypi files if present.
|
| supplements = glob.glob(os.path.join(chrome_src, '*', 'supplement.gypi'))
|
| for supplement in supplements:
|
| - args += ['-I', supplement]
|
| + AddInclude(supplement)
|
|
|
| print 'Updating projects from gyp files...'
|
| sys.stdout.flush()
|
|
|