revised patch after sync to latest code

Fix GN Bootstrap

Bug: 594067
Change-Id: Ifad95b8f16d76d85fa33dafe1d01a8d8d81319be
Reviewed-on: https://chromium-review.googlesource.com/611776
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Dirk Pranke <dpranke@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#494417}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 5fe862af0630aee079549a86fc2fe9e7a0afd8a8
diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
index 55500ad..41e4ae3 100755
--- a/tools/gn/bootstrap/bootstrap.py
+++ b/tools/gn/bootstrap/bootstrap.py
@@ -20,6 +20,7 @@
 import logging
 import optparse
 import os
+import platform
 import shutil
 import subprocess
 import sys
@@ -88,6 +89,13 @@
     # Preserve the executable permission bit.
     shutil.copy2(out_gn, options.output)
 
+def windows_target_build_arch():
+    # Target build architecture set by vcvarsall.bat
+    target_arch = os.environ.get('Platform')
+    if target_arch in ['x64', 'x86']: return target_arch
+
+    if platform.machine().lower() in ['x86_64', 'amd64']: return 'x64'
+    return 'x86'
 
 def main(argv):
   parser = optparse.OptionParser(description=sys.modules[__name__].__doc__)
@@ -363,8 +371,12 @@
         '/GR-',
         '/D_HAS_EXCEPTIONS=0',
     ])
-    # TODO(tim): Support for 64bit builds?
-    ldflags.extend(['/MACHINE:x86', '/DEBUG'])
+
+    target_arch = windows_target_build_arch()
+    if target_arch == 'x64':
+        ldflags.extend(['/MACHINE:x64'])
+    else:
+        ldflags.extend(['/MACHINE:x86'])
 
   static_libraries = {
       'base': {'sources': [], 'tool': 'cxx', 'include_dirs': []},
@@ -436,6 +448,7 @@
       'base/memory/ref_counted_memory.cc',
       'base/memory/singleton.cc',
       'base/memory/shared_memory_handle.cc',
+      'base/memory/shared_memory_tracker.cc',
       'base/memory/weak_ptr.cc',
       'base/message_loop/incoming_task_queue.cc',
       'base/message_loop/message_loop.cc',
@@ -566,6 +579,7 @@
       'base/unguessable_token.cc',
       'base/value_iterators.cc',
       'base/values.cc',
+      'base/value_iterators.cc',
       'base/vlog.cc',
   ])
 
@@ -797,6 +811,7 @@
         'version.lib',
         'winmm.lib',
         'ws2_32.lib',
+        'Shlwapi.lib',
     ])
 
   # we just build static libraries that GN needs