blob: 889f42738720f4125bc015bd6755cc6623c06805 [file] [log] [blame]
Hal Canary181ec2f2018-01-24 13:42:38 -05001#! /usr/bin/env python
2
3# Copyright 2018 Google Inc.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
Stephan Altmuellerdd3eca12018-02-02 15:05:42 -05007import argparse
Hal Canary181ec2f2018-01-24 13:42:38 -05008import os
9import sys
10
Hal Canaryff2742e2018-01-30 11:35:47 -050011fmt = '''
Hal Canaryc1261912018-02-12 15:54:40 -050012target_cpu = "{arch}"
13is_debug = {debug}
14ndk = "{android_ndk_dir}"
15ndk_api = {api_level}
16skia_enable_fontmgr_empty = true
17skia_enable_pdf = false
Hal Canary2331c822018-02-01 14:06:13 -050018skia_skqp_global_error_tolerance = 4
Hal Canaryc1261912018-02-12 15:54:40 -050019skia_use_dng_sdk = false
20skia_use_expat = false
21skia_use_icu = false
22skia_use_libheif = false
23skia_use_lua = false
24skia_use_piex = false
25skia_use_skcms = false
Stephan Altmuellerdd3eca12018-02-02 15:05:42 -050026skia_skqp_enable_driver_correctness_workarounds = {enable_workarounds}
Hal Canaryfd9bcab2018-04-24 11:47:23 -040027skia_tools_require_resources = true
Hal Canary181ec2f2018-01-24 13:42:38 -050028'''
29
Stephan Altmuellerdd3eca12018-02-02 15:05:42 -050030def parse_args():
31 parser = argparse.ArgumentParser(description='Generate args.gn file.')
32 parser.add_argument('target_build_dir')
33 parser.add_argument('android_ndk_dir' )
34 parser.add_argument('--arch', metavar='architecture', default='arm',
35 help='defaults to "arm", valid values: "arm" "arm64" "x86" "x64"')
36 parser.add_argument('--api_level', type=int, metavar='api_level',
37 default=26, help='android API level, defaults to 26')
38 parser.add_argument('--enable_workarounds', default=False,
39 action='store_true', help="enable GPU work-arounds, defaults to false")
Hal Canaryc1261912018-02-12 15:54:40 -050040 parser.add_argument('--debug', default=False, action='store_true',
41 help='compile native code in debug mode, defaults to false')
Stephan Altmuellerdd3eca12018-02-02 15:05:42 -050042
Hal Canaryc1261912018-02-12 15:54:40 -050043 # parse the args and convert bools to strings.
Stephan Altmuellerdd3eca12018-02-02 15:05:42 -050044 args = parser.parse_args()
Hal Canaryc1261912018-02-12 15:54:40 -050045 gn_bool = lambda b : 'true' if b else 'false'
46 args.enable_workarounds = gn_bool(args.enable_workarounds)
47 args.debug = gn_bool(args.debug)
48 args.android_ndk_dir = os.path.abspath(args.android_ndk_dir)
Stephan Altmuellerdd3eca12018-02-02 15:05:42 -050049 return args
50
Hal Canaryc1261912018-02-12 15:54:40 -050051def make_args_gn(out_dir, args):
Hal Canary181ec2f2018-01-24 13:42:38 -050052 if not os.path.exists(out_dir):
53 os.makedirs(out_dir)
54 with open(os.path.join(out_dir, 'args.gn'), 'w') as o:
Hal Canaryc1261912018-02-12 15:54:40 -050055 o.write(fmt.format(**args))
Hal Canary181ec2f2018-01-24 13:42:38 -050056
57if __name__ == '__main__':
Stephan Altmuellerdd3eca12018-02-02 15:05:42 -050058 args = parse_args()
Hal Canaryc1261912018-02-12 15:54:40 -050059 make_args_gn(args.target_build_dir, vars(args))