summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2015-08-28 16:47:26 -0700
committerDan Albert <danalbert@google.com>2015-08-28 16:47:26 -0700
commit8028c42019b7e69baa36e4400567ee26564caf06 (patch)
tree6aab3a225c054e92db6036fd22c6e2db6da32ea1
parent44ea52a994ed6f93a11aa46d6545338397d822c1 (diff)
downloadgdb-8028c42019b7e69baa36e4400567ee26564caf06.tar.gz
Refactor to use build_support.
Change-Id: Ic0a7920fad16b879f89ae8b5abd736922689a791
-rwxr-xr-xbuild.py124
1 files changed, 21 insertions, 103 deletions
diff --git a/build.py b/build.py
index b58f0e348..ca63f634b 100755
--- a/build.py
+++ b/build.py
@@ -17,122 +17,40 @@
"""Builds GDB for Android."""
from __future__ import print_function
-import argparse
-import inspect
-import multiprocessing
import os
-import subprocess
-import sys
+import site
+site.addsitedir(os.path.join(os.path.dirname(__file__), '../../ndk/build/lib'))
-def android_path(path=''):
- top = os.getenv('ANDROID_BUILD_TOP', '')
- if not top:
- sys.exit('ANDROID_BUILD_TOP not set. Cannot continue.\n'
- 'Please set ANDROID_BUILD_TOP to point to the root of an '
- 'Android tree.')
- return os.path.realpath(os.path.join(top, path))
+import build_support
-def get_default_package_dir():
- return android_path('out/ndk')
-
-
-def get_default_host():
- if sys.platform in ('linux', 'linux2'):
- return 'linux'
- elif sys.platform == 'darwin':
- return 'darwin'
- else:
- raise RuntimeError('Unsupported host: {}'.format(sys.platform))
-
-
-ALL_TOOLCHAINS = (
- 'arm-linux-androideabi', 'aarch64-linux-android',
- 'mipsel-linux-android', 'mips64el-linux-android',
- 'x86', 'x86_64',
-)
-
-
-class ArgParser(argparse.ArgumentParser):
+class ArgParser(build_support.ArgParser):
def __init__(self):
- super(ArgParser, self).__init__(
- description=inspect.getdoc(sys.modules[__name__]),
- formatter_class=argparse.RawDescriptionHelpFormatter)
+ super(ArgParser, self).__init__()
self.add_argument(
- '--host', choices=('darwin', 'linux', 'windows', 'windows64'),
- help='Build binaries for given OS (e.g. linux).')
- self.add_argument(
- '--package-dir', help='Directory to place the packaged GCC.',
- default=get_default_package_dir())
- self.add_argument(
- '--toolchain', choices=ALL_TOOLCHAINS,
- help='Toolchain to build. Builds all if not present.')
-
-
-def toolchain_to_arch(toolchain):
- return {
- 'arm-linux-androideabi': 'arm',
- 'aarch64-linux-android': 'arm64',
- 'mipsel-linux-android': 'mips',
- 'mips64el-linux-android': 'mips64',
- 'x86': 'x86',
- 'x86_64': 'x86_64',
- }[toolchain]
-
-
-def default_api_level(arch):
- if '64' in arch:
- return 21
- else:
- return 9
+ '--arch', choices=build_support.ALL_ARCHITECTURES,
+ help='Architecture to target. Builds all if not present.')
-def sysroot_path(toolchain):
- arch = toolchain_to_arch(toolchain)
- version = default_api_level(arch)
+def main(args):
+ arches = build_support.ALL_ARCHITECTURES
+ if args.arch is not None:
+ arches = [args.arch]
- prebuilt_ndk = 'prebuilts/ndk/current'
- sysroot_subpath = 'platforms/android-{}/arch-{}'.format(version, arch)
- return android_path(os.path.join(prebuilt_ndk, sysroot_subpath))
-
-
-def main():
- args = ArgParser().parse_args()
-
- os.chdir(android_path('toolchain/gdb'))
-
- toolchain_path = android_path('toolchain')
- ndk_path = android_path('ndk')
-
- jobs_arg = '-j{}'.format(multiprocessing.cpu_count())
-
- package_dir_arg = '--package-dir={}'.format(args.package_dir)
-
- toolchains = ALL_TOOLCHAINS
- if args.toolchain is not None:
- toolchains = [args.toolchain]
-
- host = args.host
- if host is None:
- host = get_default_host()
-
- ndk_build_tools_path = android_path('ndk/build/tools')
- build_env = dict(os.environ)
- build_env['NDK_BUILDTOOLS_PATH'] = ndk_build_tools_path
- build_env['ANDROID_NDK_ROOT'] = ndk_path
-
- print('Building {} gdb: {}'.format(host, ' '.join(toolchains)))
+ toolchain_src_arg = '--toolchain-src-dir={}'.format(
+ build_support.toolchain_path())
+ ndk_dir_arg = '--ndk-dir={}'.format(build_support.ndk_path())
+ arch_arg = '--arch={}'.format(','.join(arches))
build_cmd = [
- 'bash', 'build-gdb.sh', "--toolchain-src-dir=" + toolchain_path,
- "--ndk-dir=" + ndk_path, '--verbose',
- "--arch=" + ",".join([toolchain_to_arch(tc) for tc in toolchains]),
- package_dir_arg, jobs_arg,
+ 'bash', 'build-gdb.sh', toolchain_src_arg, ndk_dir_arg, arch_arg,
+ build_support.jobs_arg(),
]
- print(' '.join(build_cmd))
- subprocess.check_call(build_cmd, env=build_env)
+ print('Building {} gdb: {}'.format(args.host, ' '.join(arches)))
+ print(' '.join(build_cmd))
+ build_support.build(build_cmd, args)
if __name__ == '__main__':
- main()
+ build_support.run(main, ArgParser)