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