Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(824)

Unified Diff: tools/gn/bootstrap/bootstrap.py

Issue 2807463004: GN: aix port along with linux_s390x, linux_ppc64 and linux_ppc64le support. (Closed)
Patch Set: rebased, cleaned up the code, addressed comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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([

Powered by Google App Engine
This is Rietveld 408576698