Index: build/gyp_chromium |
diff --git a/build/gyp_chromium b/build/gyp_chromium |
index 11125751a0e5b0e515741ee8d18cd96c608a40e0..3d527aa3380a3df4ef7d8910497c66c7fe58ea73 100755 |
--- a/build/gyp_chromium |
+++ b/build/gyp_chromium |
@@ -7,6 +7,7 @@ |
# This script is wrapper for Chromium that adds some support for how GYP |
# is invoked by Chromium beyond what can be done in the gclient hooks. |
+import argparse |
import glob |
import gyp_environment |
import os |
@@ -124,15 +125,10 @@ def GetGypVars(supplemental_files): |
env_items = ProcessGypDefinesItems( |
shlex.split(os.environ.get('GYP_DEFINES', ''))) |
- # GYP defines from the command line. We can't use optparse since we want |
- # to ignore all arguments other than "-D". |
- cmdline_input_items = [] |
- for i in range(len(sys.argv))[1:]: |
- if sys.argv[i].startswith('-D'): |
- if sys.argv[i] == '-D' and i + 1 < len(sys.argv): |
- cmdline_input_items += [sys.argv[i + 1]] |
- elif len(sys.argv[i]) > 2: |
- cmdline_input_items += [sys.argv[i][2:]] |
+ # GYP defines from the command line. |
+ parser = argparse.ArgumentParser() |
+ parser.add_argument('-D', dest='defines', action='append', default=[]) |
+ cmdline_input_items = parser.parse_known_args()[0].defines |
cmdline_items = ProcessGypDefinesItems(cmdline_input_items) |
vars_dict = dict(supp_items + env_items + cmdline_items) |
@@ -141,21 +137,21 @@ def GetGypVars(supplemental_files): |
def GetOutputDirectory(): |
"""Returns the output directory that GYP will use.""" |
- # GYP generator flags from the command line. We can't use optparse since we |
- # want to ignore all arguments other than "-G". |
- needle = '-Goutput_dir=' |
- cmdline_input_items = [] |
- for item in sys.argv[1:]: |
- if item.startswith(needle): |
- return item[len(needle):] |
- env_items = shlex.split(os.environ.get('GYP_GENERATOR_FLAGS', '')) |
+ # Handle command line generator flags. |
+ parser = argparse.ArgumentParser() |
+ parser.add_argument('-G', dest='genflags', default=[], action='append') |
+ genflags = parser.parse_known_args()[0].genflags |
+ |
+ # Handle generator flags from the environment. |
+ genflags += shlex.split(os.environ.get('GYP_GENERATOR_FLAGS', '')) |
+ |
needle = 'output_dir=' |
- for item in env_items: |
+ for item in genflags: |
if item.startswith(needle): |
return item[len(needle):] |
- return "out" |
+ return 'out' |
def additional_include_files(supplemental_files, args=[]): |