| Index: tools/gn/bootstrap/bootstrap.py
 | 
| diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
 | 
| index 8252799c578da1d541fdccb641d285e8c12239fa..2528398265e29872d8bb0b1400921520f4974433 100755
 | 
| --- a/tools/gn/bootstrap/bootstrap.py
 | 
| +++ b/tools/gn/bootstrap/bootstrap.py
 | 
| @@ -32,7 +32,8 @@ SRC_ROOT = os.path.dirname(os.path.dirname(GN_ROOT))
 | 
|  is_win = sys.platform.startswith('win')
 | 
|  is_linux = sys.platform.startswith('linux')
 | 
|  is_mac = sys.platform.startswith('darwin')
 | 
| -is_posix = is_linux or is_mac
 | 
| +is_aix = sys.platform.startswith('aix')
 | 
| +is_posix = is_linux or is_mac or is_aix
 | 
|  
 | 
|  def check_call(cmd, **kwargs):
 | 
|    logging.debug('Running: %s', ' '.join(cmd))
 | 
| @@ -223,6 +224,8 @@ def write_generic_ninja(path, static_libraries, executables,
 | 
|      template_filename = 'build_vs.ninja.template'
 | 
|    elif is_mac:
 | 
|      template_filename = 'build_mac.ninja.template'
 | 
| +  elif is_aix:
 | 
| +    template_filename = 'build_aix.ninja.template'
 | 
|    else:
 | 
|      template_filename = 'build.ninja.template'
 | 
|  
 | 
| @@ -298,6 +301,11 @@ def write_gn_ninja(path, root_gen_dir, options):
 | 
|      cxx = os.environ.get('CXX', 'cl.exe')
 | 
|      ld = os.environ.get('LD', 'link.exe')
 | 
|      ar = os.environ.get('AR', 'lib.exe')
 | 
| +  elif is_aix:
 | 
| +    cc = os.environ.get('CC', 'gcc')
 | 
| +    cxx = os.environ.get('CXX', 'c++')
 | 
| +    ld = os.environ.get('LD', cxx)
 | 
| +    ar = os.environ.get('AR', 'ar -X64')
 | 
|    else:
 | 
|      cc = os.environ.get('CC', 'cc')
 | 
|      cxx = os.environ.get('CXX', 'c++')
 | 
| @@ -318,6 +326,12 @@ def write_gn_ninja(path, root_gen_dir, options):
 | 
|      if options.debug:
 | 
|        cflags.extend(['-O0', '-g'])
 | 
|      else:
 | 
| +      # The linux::ppc64 BE binary doesn't "work" when
 | 
| +      # optimization level is set to 2 (0 works fine).
 | 
| +      # Note that the current bootstrap script has no way to detect host_cpu.
 | 
| +      # This can be easily fixed once we start building using a GN binary,
 | 
| +      # as the optimization flag can then just be set using the
 | 
| +      # logic inside //build/toolchain.
 | 
|        cflags.extend(['-O2', '-g0'])
 | 
|  
 | 
|      cflags.extend([
 | 
| @@ -328,6 +342,9 @@ def write_gn_ninja(path, root_gen_dir, options):
 | 
|          '-fno-exceptions'
 | 
|      ])
 | 
|      cflags_cc.extend(['-std=c++11', '-Wno-c++11-narrowing'])
 | 
| +    if is_aix:
 | 
| +     cflags.extend(['-maix64'])
 | 
| +     ldflags.extend([ '-maix64 -Wl,-bbigtoc' ])
 | 
|    elif is_win:
 | 
|      if not options.debug:
 | 
|        cflags.extend(['/Ox', '/DNDEBUG', '/GL'])
 | 
| @@ -503,6 +520,10 @@ def write_gn_ninja(path, root_gen_dir, options):
 | 
|        'base/threading/thread_restrictions.cc',
 | 
|        'base/threading/thread_task_runner_handle.cc',
 | 
|        'base/threading/worker_pool.cc',
 | 
| +      'base/time/clock.cc',
 | 
| +      'base/time/default_clock.cc',
 | 
| +      'base/time/default_tick_clock.cc',
 | 
| +      'base/time/tick_clock.cc',
 | 
|        'base/time/time.cc',
 | 
|        'base/timer/elapsed_timer.cc',
 | 
|        'base/timer/timer.cc',
 | 
| @@ -597,8 +618,7 @@ def write_gn_ninja(path, root_gen_dir, options):
 | 
|          'cflags': cflags + ['-DHAVE_CONFIG_H'],
 | 
|      }
 | 
|  
 | 
| -  if is_linux:
 | 
| -    libs.extend(['-lrt', '-latomic'])
 | 
| +  if is_linux or is_aix:
 | 
|      ldflags.extend(['-pthread'])
 | 
|  
 | 
|      static_libraries['xdg_user_dirs'] = {
 | 
| @@ -608,8 +628,6 @@ def write_gn_ninja(path, root_gen_dir, options):
 | 
|          'tool': 'cxx',
 | 
|      }
 | 
|      static_libraries['base']['sources'].extend([
 | 
| -        'base/allocator/allocator_shim.cc',
 | 
| -        'base/allocator/allocator_shim_default_dispatch_to_glibc.cc',
 | 
|          'base/memory/shared_memory_posix.cc',
 | 
|          'base/memory/shared_memory_tracker.cc',
 | 
|          'base/nix/xdg_util.cc',
 | 
| @@ -625,13 +643,29 @@ def write_gn_ninja(path, root_gen_dir, options):
 | 
|          'base/threading/platform_thread_linux.cc',
 | 
|          'base/trace_event/malloc_dump_provider.cc',
 | 
|      ])
 | 
| -    static_libraries['libevent']['include_dirs'].extend([
 | 
| -        os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'linux')
 | 
| -    ])
 | 
| -    static_libraries['libevent']['sources'].extend([
 | 
| -        'base/third_party/libevent/epoll.c',
 | 
| -    ])
 | 
| -
 | 
| +    if is_linux:
 | 
| +      static_libraries['base']['sources'].extend([
 | 
| +        'base/allocator/allocator_shim.cc',
 | 
| +        'base/allocator/allocator_shim_default_dispatch_to_glibc.cc',
 | 
| +      ])
 | 
| +      libs.extend(['-lrt', '-latomic'])
 | 
| +      static_libraries['libevent']['include_dirs'].extend([
 | 
| +          os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'linux')
 | 
| +      ])
 | 
| +      static_libraries['libevent']['sources'].extend([
 | 
| +         'base/third_party/libevent/epoll.c',
 | 
| +      ])
 | 
| +    else:
 | 
| +      libs.extend(['-lrt'])
 | 
| +      static_libraries['base']['sources'].extend([
 | 
| +          'base/process/internal_aix.cc'
 | 
| +      ])
 | 
| +      static_libraries['libevent']['include_dirs'].extend([
 | 
| +          os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'aix')
 | 
| +      ])
 | 
| +      static_libraries['libevent']['include_dirs'].extend([
 | 
| +          os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'compat')
 | 
| +      ])
 | 
|  
 | 
|    if is_mac:
 | 
|      static_libraries['base']['sources'].extend([
 | 
| 
 |