Add support for GYP_GENERATOR_FLAGS out dir setting for landmines

BUG=421894

Review URL: https://codereview.chromium.org/695753002

Cr-Commit-Position: refs/heads/master@{#302419}


CrOS-Libchrome-Original-Commit: 6bad0d4fad0ee39e993d90eb2ab8050d650efa2b
diff --git a/build/landmine_utils.py b/build/landmine_utils.py
index 7737832..9b667d0 100644
--- a/build/landmine_utils.py
+++ b/build/landmine_utils.py
@@ -48,6 +48,12 @@
       for arg in shlex.split(os.environ.get('GYP_DEFINES', '')))
 
 @memoize()
+def gyp_generator_flags():
+  """Parses and returns GYP_GENERATOR_FLAGS env var as a dictionary."""
+  return dict(arg.split('=', 1)
+      for arg in shlex.split(os.environ.get('GYP_GENERATOR_FLAGS', '')))
+
+@memoize()
 def gyp_msvs_version():
   return os.environ.get('GYP_MSVS_VERSION', '')
 
diff --git a/build/landmines.py b/build/landmines.py
index a034864..e1ce6f3 100755
--- a/build/landmines.py
+++ b/build/landmines.py
@@ -44,7 +44,12 @@
   if build_tool == 'xcode':
     ret = os.path.join(SRC_DIR, 'xcodebuild')
   elif build_tool in ['make', 'ninja', 'ninja-ios']:  # TODO: Remove ninja-ios.
-    ret = os.path.join(SRC_DIR, os.environ.get('CHROMIUM_OUT_DIR', 'out'))
+    if ('CHROMIUM_OUT_DIR' not in os.environ and
+        'output_dir' in landmine_utils.gyp_generator_flags()):
+      output_dir = landmine_utils.gyp_generator_flags()['output_dir']
+    else:
+      output_dir = os.environ.get('CHROMIUM_OUT_DIR', 'out')
+    ret = os.path.join(SRC_DIR, output_dir)
   else:
     raise NotImplementedError('Unexpected GYP_GENERATORS (%s)' % build_tool)
   return os.path.abspath(ret)