def __init__(self): super(ArgParser, self).__init__( description='Repackages NDK modules as a monolithic package. If ' '--unpack is used, instead installs the monolithic ' 'package to a directory.') self.add_argument( '--arch', choices=build_support.ALL_ARCHITECTURES, help='Bundle only the given architecture.') self.add_argument( '--host', choices=('darwin', 'linux', 'windows', 'windows64'), default=build_support.get_default_host(), help='Package binaries for given OS (e.g. linux).') self.add_argument( '--build-number', default=0, help='Build number for use in version files.') self.add_argument( '--release', help='Ignored. Temporarily compatibility.') self.add_argument( '-f', '--force', dest='force', action='store_true', help='Clobber out directory if it exists.') self.add_argument( '--dist-dir', type=os.path.realpath, default=build_support.get_dist_dir(build_support.get_out_dir()), help='Directory containing NDK modules.') self.add_argument( '--unpack', action='store_true', help='Unpack the NDK to a directory rather than make a tarball.') self.add_argument( 'out_dir', metavar='OUT_DIR', help='Directory to install bundle or tarball to.')
def main(): parser = ArgParser() args = parser.parse_args() if args.module is None: modules = ALL_MODULES else: modules = {args.module} if args.host_only: modules = { 'build', 'clang', 'gcc', 'host-tools', 'python-packages', 'shader_tools', } required_package_modules = ALL_MODULES have_required_modules = required_package_modules <= modules if (args.package and have_required_modules) or args.force_package: do_package = True else: do_package = False # TODO(danalbert): wine? # We're building the Windows packages from Linux, so we can't actually run # any of the tests from here. if args.system.startswith('windows') or not do_package: args.test = False # Disable buffering on stdout so the build output doesn't hide all of our # "Building..." messages. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) os.chdir(os.path.dirname(os.path.realpath(__file__))) # Set ANDROID_BUILD_TOP. if 'ANDROID_BUILD_TOP' not in os.environ: os.environ['ANDROID_BUILD_TOP'] = os.path.realpath('..') out_dir = build_support.get_out_dir() dist_dir = build_support.get_dist_dir(out_dir) tmp_dir = os.path.join(out_dir, 'build') if os.path.exists(tmp_dir): shutil.rmtree(tmp_dir) os.mkdir(tmp_dir) os.environ['TMPDIR'] = tmp_dir print('Cleaning up...') invoke_build('dev-cleanup.sh') module_builds = collections.OrderedDict([ ('build', build_build), ('clang', build_clang), ('cpufeatures', build_cpufeatures), ('gabi++', build_gabixx), ('gcc', build_gcc), ('gdbserver', build_gdbserver), ('gnustl', build_gnustl), ('gtest', build_gtest), ('host-tools', build_host_tools), ('libandroid_support', build_libandroid_support), ('libc++', build_libcxx), ('libc++abi', build_libcxxabi), ('libshaderc', build_libshaderc), ('native_app_glue', build_native_app_glue), ('ndk_helper', build_ndk_helper), ('platforms', build_platforms), ('python-packages', build_python_packages), ('shader_tools', build_shader_tools), ('stlport', build_stlport), ('system-stl', build_system_stl), ('vulkan', build_vulkan), ]) print('Building modules: {}'.format(' '.join(modules))) for module in modules: module_builds[module](out_dir, dist_dir, args) if do_package: package_ndk(out_dir, dist_dir, args) if args.test: result = test_ndk(out_dir, args) sys.exit(0 if result else 1)