diff options
author | Dan Albert <danalbert@google.com> | 2015-08-28 16:47:26 -0700 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2015-08-28 16:47:26 -0700 |
commit | 8028c42019b7e69baa36e4400567ee26564caf06 (patch) | |
tree | 6aab3a225c054e92db6036fd22c6e2db6da32ea1 | |
parent | 44ea52a994ed6f93a11aa46d6545338397d822c1 (diff) | |
download | gdb-8028c42019b7e69baa36e4400567ee26564caf06.tar.gz |
Refactor to use build_support.
Change-Id: Ic0a7920fad16b879f89ae8b5abd736922689a791
-rwxr-xr-x | build.py | 124 |
1 files changed, 21 insertions, 103 deletions
@@ -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) |