generate_gn_args 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #! /usr/bin/env python
  2. # Copyright 2018 Google Inc.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. import argparse
  6. import os
  7. import sys
  8. from skqp_gn_args import SkqpGnArgs
  9. fmt = '''
  10. target_cpu = "{arch}"
  11. ndk = "{android_ndk_dir}"
  12. is_debug = {debug}
  13. ndk_api = {api_level}
  14. '''
  15. def parse_args():
  16. parser = argparse.ArgumentParser(description='Generate args.gn file.')
  17. parser.add_argument('target_build_dir')
  18. parser.add_argument('android_ndk_dir' )
  19. parser.add_argument('--arch', metavar='architecture', default='arm',
  20. help='defaults to "arm", valid values: "arm" "arm64" "x86" "x64"')
  21. parser.add_argument('--api_level', type=int, metavar='api_level',
  22. default=26, help='android API level, defaults to 26')
  23. parser.add_argument('--enable_workarounds', default=False,
  24. action='store_true', help="enable GPU work-arounds, defaults to false")
  25. parser.add_argument('--debug', default=False, action='store_true',
  26. help='compile native code in debug mode, defaults to false')
  27. # parse the args and convert bools to strings.
  28. args = parser.parse_args()
  29. gn_bool = lambda b : 'true' if b else 'false'
  30. args.enable_workarounds = gn_bool(args.enable_workarounds)
  31. args.debug = gn_bool(args.debug)
  32. args.android_ndk_dir = os.path.abspath(args.android_ndk_dir)
  33. return args
  34. def write_gn(o, args):
  35. o.write(fmt.format(**args))
  36. for k, v in SkqpGnArgs.iteritems():
  37. o.write('%s = %s\n' % (k,v) )
  38. def make_args_gn(out_dir, args):
  39. if out_dir == '-':
  40. write_gn(sys.stdout, args)
  41. return
  42. if not os.path.exists(out_dir):
  43. os.makedirs(out_dir)
  44. with open(os.path.join(out_dir, 'args.gn'), 'w') as o:
  45. write_gn(o, args)
  46. if __name__ == '__main__':
  47. args = parse_args()
  48. make_args_gn(args.target_build_dir, vars(args))