189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org#!/usr/bin/python
289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
389335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org# Copyright 2014 Google Inc.
489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org#
589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org# Use of this source code is governed by a BSD-style license that can be
689335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org# found in the LICENSE file.
789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org"""
989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgScript for generating the Android framework's version of Skia from gyp
1089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgfiles.
1189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org"""
1289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
138fd8d38626ebb84d47ed8ba155efecb241fed6dcscroggoimport argparse
1489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgimport os
1589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgimport shutil
1689335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgimport sys
1789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgimport tempfile
1889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
1989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org# Find the top of trunk
2089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgSCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
2189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgSKIA_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir,
2289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org                                         os.pardir))
2389335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
2489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org# Find the directory with our helper files, and add it to the path.
25a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgANDROID_TOOLS = os.path.join(SKIA_DIR, 'platform_tools', 'android')
26a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgsys.path.append(ANDROID_TOOLS)
27a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.org
28a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgimport gyp_gen.android_framework_gyp as android_framework_gyp
29a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgimport gyp_gen.gypd_parser as gypd_parser
30a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgimport gyp_gen.generate_user_config as generate_user_config
31a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgimport gyp_gen.makefile_writer as makefile_writer
32a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgimport gyp_gen.tool_makefile_writer as tool_makefile_writer
33a3987574c8fe9387ae8cb534d4f5248608b85b0ecommit-bot@chromium.orgimport gyp_gen.vars_dict_lib as vars_dict_lib
3489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
3589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org# Folder containing all gyp files and generated gypd files.
3689335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgGYP_FOLDER = 'gyp'
3789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
3889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
3960936c732b1d21940a21a95f5757ae24c666877bscroggodef generate_var_dict(target_dir, target_file, skia_arch_type, have_neon,
4060936c732b1d21940a21a95f5757ae24c666877bscroggo                      gyp_source_dir):
41d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  """Create a VarsDict for a particular arch type.
42d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org
43d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  Each paramater is passed directly to android_framework_gyp.main().
44d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org
45d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  Args:
46d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    target_dir: Directory containing gyp files.
47d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    target_file: Target gyp file.
48d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    skia_arch_type: Target architecture.
49d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    have_neon: Whether the target should build for neon.
5060936c732b1d21940a21a95f5757ae24c666877bscroggo    gyp_source_dir: Directory for gyp source.
51d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  Returns:
52d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    A VarsDict containing the variable definitions determined by gyp.
5389335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  """
5489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  result_file = android_framework_gyp.main(target_dir, target_file,
5560936c732b1d21940a21a95f5757ae24c666877bscroggo                                           skia_arch_type, have_neon,
5660936c732b1d21940a21a95f5757ae24c666877bscroggo                                           gyp_source_dir)
5789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  var_dict = vars_dict_lib.VarsDict()
58d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  gypd_parser.parse_gypd(var_dict, result_file, '.')
59d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  android_framework_gyp.clean_gypd_files(target_dir)
6089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  print '.',
6189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  return var_dict
6289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
6360936c732b1d21940a21a95f5757ae24c666877bscroggodef main(target_dir=None, require_sk_user_config=False, gyp_source_dir=None):
64d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  """Create Android.mk for the Android framework's external/skia.
65d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org
66d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  Builds Android.mk using Skia's gyp files.
67d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org
68d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org  Args:
69d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    target_dir: Directory in which to place 'Android.mk'. If None, the file
70d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org      will be placed in skia's root directory.
71d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    require_sk_user_config: If True, raise an AssertionError if
72d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org      SkUserConfig.h does not exist.
7360936c732b1d21940a21a95f5757ae24c666877bscroggo    gyp_source_dir: Source directory for gyp.
7489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  """
7589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  # Create a temporary folder to hold gyp and gypd files. Create it in SKIA_DIR
7689335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  # so that it is a sibling of gyp/, so the relationships between gyp files and
7789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  # other files (e.g. platform_tools/android/gyp/dependencies.gypi, referenced
7889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  # by android_deps.gyp as a relative path) is unchanged.
7989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  # Use mkdtemp to find an unused folder name, but then delete it so copytree
8089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  # can be called with a non-existent directory.
8189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  tmp_folder = tempfile.mkdtemp(dir=SKIA_DIR)
8289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  os.rmdir(tmp_folder)
8389335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  shutil.copytree(os.path.join(SKIA_DIR, GYP_FOLDER), tmp_folder)
8489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
8589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  try:
8689335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    main_gyp_file = 'android_framework_lib.gyp'
8789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
8889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    print 'Creating Android.mk',
8989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
9089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # Generate a separate VarsDict for each architecture type.  For each
9189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # archtype:
9289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # 1. call android_framework_gyp.main() to generate gypd files
9389335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # 2. call parse_gypd to read those gypd files into the VarsDict
9489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # 3. delete the gypd files
9589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    #
9689335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # Once we have the VarsDict for each architecture type, we combine them all
9789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # into a single Android.mk file, which can build targets of any
9889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # architecture type.
9989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
10089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # The default uses a non-existant archtype, to find all the general
10189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # variable definitions.
10289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    default_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'other',
10360936c732b1d21940a21a95f5757ae24c666877bscroggo                                         False, gyp_source_dir)
10460936c732b1d21940a21a95f5757ae24c666877bscroggo    arm_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'arm', False,
10560936c732b1d21940a21a95f5757ae24c666877bscroggo                                     gyp_source_dir)
10689335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    arm_neon_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'arm',
10760936c732b1d21940a21a95f5757ae24c666877bscroggo                                          True, gyp_source_dir)
10860936c732b1d21940a21a95f5757ae24c666877bscroggo    x86_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'x86', False,
10960936c732b1d21940a21a95f5757ae24c666877bscroggo                                     gyp_source_dir)
110df1c3373fc198f465cb0077516993dd41f268416scroggo    x86_64_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'x86_64',
111df1c3373fc198f465cb0077516993dd41f268416scroggo                                        False, gyp_source_dir)
112069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org
11360936c732b1d21940a21a95f5757ae24c666877bscroggo    mips_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'mips', False,
11460936c732b1d21940a21a95f5757ae24c666877bscroggo                                      gyp_source_dir)
11589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
1169de2fb680f0f09d759fcbedf22f69158fcb84682scroggo    mips64_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'mips64',
11760936c732b1d21940a21a95f5757ae24c666877bscroggo                                        False, gyp_source_dir)
1189de2fb680f0f09d759fcbedf22f69158fcb84682scroggo
119ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    arm64_var_dict = generate_var_dict(tmp_folder, main_gyp_file, 'arm64',
12060936c732b1d21940a21a95f5757ae24c666877bscroggo                                       False, gyp_source_dir)
121ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org
12289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # Compute the intersection of all targets. All the files in the intersection
12389335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # should be part of the makefile always. Each dict will now contain trimmed
12489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # lists containing only variable definitions specific to that configuration.
125069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org    var_dict_list = [default_var_dict, arm_var_dict, arm_neon_var_dict,
126df1c3373fc198f465cb0077516993dd41f268416scroggo                     x86_var_dict, x86_64_var_dict, mips_var_dict,
127df1c3373fc198f465cb0077516993dd41f268416scroggo                     mips64_var_dict, arm64_var_dict]
12889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    common = vars_dict_lib.intersect(var_dict_list)
12989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
130d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    common.LOCAL_MODULE.add('libskia')
131d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org
132ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    # Create SkUserConfig
133ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    user_config = os.path.join(SKIA_DIR, 'include', 'config', 'SkUserConfig.h')
134ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    if target_dir:
135ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org      dst_dir = target_dir
136ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    else:
137ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org      dst_dir = os.path.join(SKIA_DIR, 'include', 'core')
138ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org
139ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    generate_user_config.generate_user_config(
140ec68ee9d569907672fb3e57333b23096e4185799commit-bot@chromium.org        original_sk_user_config=user_config,
141ec68ee9d569907672fb3e57333b23096e4185799commit-bot@chromium.org        require_sk_user_config=require_sk_user_config, target_dir=dst_dir,
14224b04fa2adc284f21bdfde16d65e9fd2a72f0c2escroggo        defines=common.DEFINES)
143ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org
144d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    tool_makefile_writer.generate_tool(gyp_dir=tmp_folder,
1450459cc732b8257b98bce39af8b73f82bed2a8d6cmtklein                                       target_file='bench.gyp',
1463eb258d3f67cb78f3b0045857bb10e0774a55b41scroggo                                       skia_trunk=target_dir,
1470459cc732b8257b98bce39af8b73f82bed2a8d6cmtklein                                       dest_dir='bench',
1483eb258d3f67cb78f3b0045857bb10e0774a55b41scroggo                                       skia_lib_var_dict=common,
1490459cc732b8257b98bce39af8b73f82bed2a8d6cmtklein                                       local_module_name='skia_nanobench',
1503eb258d3f67cb78f3b0045857bb10e0774a55b41scroggo                                       local_module_tags=['tests'],
15109acfc8d1fd1723d01b7103f58a6f1502648f428scroggo                                       desired_targets=['nanobench'],
15209acfc8d1fd1723d01b7103f58a6f1502648f428scroggo                                       gyp_source_dir=gyp_source_dir)
1533eb258d3f67cb78f3b0045857bb10e0774a55b41scroggo
1543eb258d3f67cb78f3b0045857bb10e0774a55b41scroggo    tool_makefile_writer.generate_tool(gyp_dir=tmp_folder,
155120c99993e60e7aedb0838f09d6f1b1d2f576c78commit-bot@chromium.org                                       target_file='dm.gyp',
156120c99993e60e7aedb0838f09d6f1b1d2f576c78commit-bot@chromium.org                                       skia_trunk=target_dir,
157120c99993e60e7aedb0838f09d6f1b1d2f576c78commit-bot@chromium.org                                       dest_dir='dm',
158120c99993e60e7aedb0838f09d6f1b1d2f576c78commit-bot@chromium.org                                       skia_lib_var_dict=common,
159120c99993e60e7aedb0838f09d6f1b1d2f576c78commit-bot@chromium.org                                       local_module_name='skia_dm',
160950f89dd20325bf4dfce588d9f64644040787a06scroggo                                       local_module_tags=['tests'],
16109acfc8d1fd1723d01b7103f58a6f1502648f428scroggo                                       desired_targets=['dm'],
16209acfc8d1fd1723d01b7103f58a6f1502648f428scroggo                                       gyp_source_dir=gyp_source_dir)
163120c99993e60e7aedb0838f09d6f1b1d2f576c78commit-bot@chromium.org
164d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    # Now that the defines have been written to SkUserConfig and they've been
165d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    # used to skip adding them to the tools makefiles, they are not needed in
166d6656854697b2039fb88a4afd6bc1995bf6dfa02commit-bot@chromium.org    # Android.mk. Reset DEFINES.
167ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    common.DEFINES.reset()
168ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org
16989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # Further trim arm_neon_var_dict with arm_var_dict. After this call,
17089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # arm_var_dict (which will now be the intersection) includes all definitions
17189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # used by both arm and arm + neon, and arm_neon_var_dict will only contain
17289335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    # those specific to arm + neon.
17389335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    arm_var_dict = vars_dict_lib.intersect([arm_var_dict, arm_neon_var_dict])
17489335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
175069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org    # Now create a list of VarsDictData holding everything but common.
176069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org    deviations_from_common = []
177069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org    deviations_from_common.append(makefile_writer.VarsDictData(
178069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org        arm_var_dict, 'arm'))
179069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org    deviations_from_common.append(makefile_writer.VarsDictData(
180069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org        arm_neon_var_dict, 'arm', 'ARCH_ARM_HAVE_NEON'))
181069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org    deviations_from_common.append(makefile_writer.VarsDictData(x86_var_dict,
182069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org                                                               'x86'))
183df1c3373fc198f465cb0077516993dd41f268416scroggo    deviations_from_common.append(makefile_writer.VarsDictData(x86_64_var_dict,
184069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org                                                               'x86_64'))
185069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org
186069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org    deviations_from_common.append(makefile_writer.VarsDictData(mips_var_dict,
187069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org                                                               'mips'))
188069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org
1899de2fb680f0f09d759fcbedf22f69158fcb84682scroggo    deviations_from_common.append(makefile_writer.VarsDictData(mips64_var_dict,
1909de2fb680f0f09d759fcbedf22f69158fcb84682scroggo                                                               'mips64'))
1919de2fb680f0f09d759fcbedf22f69158fcb84682scroggo
192ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org    deviations_from_common.append(makefile_writer.VarsDictData(arm64_var_dict,
193ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org                                                               'arm64'))
194ba0c5ea90d0e6b2e8b20696e54fea13ead6dda93commit-bot@chromium.org
19589335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    makefile_writer.write_android_mk(target_dir=target_dir,
196069c2a46ba2dc419dcd7dbcb9bf3b83c49b45b41commit-bot@chromium.org        common=common, deviations_from_common=deviations_from_common)
19789335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
19889335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org  finally:
19989335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org    shutil.rmtree(tmp_folder)
20089335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.org
20189335631749b29ea92e55ed710f030692aa13297commit-bot@chromium.orgif __name__ == '__main__':
2028fd8d38626ebb84d47ed8ba155efecb241fed6dcscroggo  parser = argparse.ArgumentParser()
2038fd8d38626ebb84d47ed8ba155efecb241fed6dcscroggo  parser.add_argument('--gyp_source_dir', help='Source of gyp program. '
2048fd8d38626ebb84d47ed8ba155efecb241fed6dcscroggo                      'e.g. <path_to_skia>/third_party/externals/gyp')
2058fd8d38626ebb84d47ed8ba155efecb241fed6dcscroggo  args = parser.parse_args()
2068fd8d38626ebb84d47ed8ba155efecb241fed6dcscroggo
2078fd8d38626ebb84d47ed8ba155efecb241fed6dcscroggo  main(gyp_source_dir=args.gyp_source_dir)
208