skia2/platform_tools/android/gyp_gen/gypd_parser.py

154 lines
5.6 KiB
Python
Raw Normal View History

#!/usr/bin/python
# Copyright 2014 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
"""Functions for parsing the gypd output from gyp.
"""
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
import os
def parse_dictionary(var_dict, d, current_target_name, dest_dir):
"""Helper function to get the meaningful entries in a dictionary.
Parse dictionary d, and store unique relevant entries in var_dict.
Recursively parses internal dictionaries and files that are referenced.
When parsing the 'libraries' list from gyp, entries in the form
'-l<name>' get assigned to var_dict.LOCAL_SHARED_LIBRARIES as 'lib<name>',
and entries in the form '[lib]<name>.a' get assigned to
var_dict.LOCAL_STATIC_LIBRARIES as 'lib<name>'.
Args:
var_dict: VarsDict object for storing the results of the parsing.
d: Dictionary object to parse.
current_target_name: The current target being parsed. If this dictionary
is a target, this will be its entry 'target_name'. Otherwise, this will
be the name of the target which contains this dictionary.
dest_dir: Destination for the eventual Android.mk that will be created from
this parse, relative to Skia trunk. Used to determine path for source
files.
"""
for source in d.get('sources', []):
# Compare against a lowercase version, in case files are named .H or .GYPI
lowercase_source = source.lower()
if lowercase_source.endswith('.h'):
# Android.mk does not need the header files.
continue
if lowercase_source.endswith('gypi'):
# The gypi files are included in sources, but the sources they included
# are also included. No need to parse them again.
continue
# The path is relative to the gyp folder, but Android wants the path
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
# relative to dest_dir.
rel_source = os.path.relpath(source, os.pardir)
rel_source = os.path.relpath(rel_source, dest_dir)
var_dict.LOCAL_SRC_FILES.add(rel_source)
for lib in d.get('libraries', []):
if lib.endswith('.a'):
# Remove the '.a'
lib = lib[:-2]
# Add 'lib', if necessary
if not lib.startswith('lib'):
lib = 'lib' + lib
var_dict.LOCAL_STATIC_LIBRARIES.add(lib)
else:
# lib will be in the form of '-l<name>'. Change it to 'lib<name>'
lib = lib.replace('-l', 'lib', 1)
var_dict.LOCAL_SHARED_LIBRARIES.add(lib)
for dependency in d.get('dependencies', []):
# Each dependency is listed as
# <path_to_file>:<target>#target
li = dependency.split(':')
assert(len(li) <= 2 and len(li) >= 1)
sub_targets = []
if len(li) == 2 and li[1] != '*':
sub_targets.append(li[1].split('#')[0])
sub_path = li[0]
assert(sub_path.endswith('.gyp'))
# Although the original reference is to a .gyp, parse the corresponding
# gypd file, which was constructed by gyp.
sub_path = sub_path + 'd'
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
parse_gypd(var_dict, sub_path, dest_dir, sub_targets)
if 'default_configuration' in d:
config_name = d['default_configuration']
# default_configuration is meaningless without configurations
assert('configurations' in d)
config = d['configurations'][config_name]
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
parse_dictionary(var_dict, config, current_target_name, dest_dir)
for flag in d.get('cflags', []):
var_dict.LOCAL_CFLAGS.add(flag)
for flag in d.get('cflags_cc', []):
var_dict.LOCAL_CPPFLAGS.add(flag)
for include in d.get('include_dirs', []):
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
if include.startswith('external'):
# This path is relative to the Android root. Leave it alone.
rel_include = include
else:
# As with source, the input path will be relative to gyp/, but Android
# wants relative to dest_dir.
rel_include = os.path.relpath(include, os.pardir)
rel_include = os.path.relpath(rel_include, dest_dir)
Generate bench/Android.mk from gyp. For now, remove json functionality and do not depend on json. This allows us to build and run until solving skbug.com/2448. bench/DeferredSurfaceCopyBench.cpp: Include GrRenderTarget last, so SK_SUPPORT_GPU will be set properly. bench/ResultsWriter.h: bench/benchmain.cpp: Remove JSONResultsWriter when SK_BUILD_JSON_WRITER is not defined, which is the case for the Android framework build. gyp/bench.gyp: Depend on skia and cutils (for android_atomic_inc etc). gyp/common_conditions.gypi: Define SK_BUILD_JSON_WRITER when skia_build_json_writer is set. gyp/common_variables.gypi: Add a flag for skia_build_json_writer, and set it only when skia_android_framework is not set. gyp/jsoncpp.gyp: Do not build jsoncpp when skia_build_json_writer is not defined. include/utils/SkJSONCPP.h: Do not include json headers when SK_BUILD_JSON_WRITER is not defined. platform_tools/android/bin/gyp_to_android.py: Generate bench/Android.mk. platform_tools/android/gyp_gen/gypd_parser.py: Skip dest_dir when checking for include_dirs. platform_tools/android/gyp_gen/makefile_writer.py: Build bench/Android.mk when building external/skia. platform_tools/android/gyp_gen/tool_makefile_writer.py: Add a parameter for putting the binary into /data/local/tmp. BUG=skia:2447 BUG=skia:2448 R=halcanary@google.com, reed@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/282053002 git-svn-id: http://skia.googlecode.com/svn/trunk@14760 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-05-16 13:15:41 +00:00
# No need to include the base directory.
if rel_include is os.curdir:
continue
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
rel_include = os.path.join('$(LOCAL_PATH)', rel_include)
# Remove a trailing slash, if present.
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
if rel_include.endswith('/'):
rel_include = rel_include[:-1]
var_dict.LOCAL_C_INCLUDES.add(rel_include)
# For the top level, libskia, include directories should be exported.
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
# FIXME (scroggo): Do not hard code this.
if current_target_name == 'libskia':
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
var_dict.LOCAL_EXPORT_C_INCLUDE_DIRS.add(rel_include)
for define in d.get('defines', []):
Updates to Android.mk generation. Generate SkUserConfig. Include arm64 as another build flavor. Add tests. gyp/common_conditions.gypi: Add conditions for Android framework. These will get written into the generated SkUserConfig. include/core/SkUserConfig.h: Generated version that will ultimately be checked into Android (but not here). platform_tools/android/bin/gyp_to_android.py: Generate SkUserConfig. Add arm64 (note that arm64 is not currently respected by our gyp files, so it results in use _none.cpp for the various opts). Reset the common defines, which are now passed to the generated SkUserConfig. platform_tools/android/gyp_gen/generate_user_config.py: New script to generate SkUserConfig.h. platform_tools/android/gyp_gen/gypd_parser.py: Fix a lint error (unused import). platform_tools/android/gyp_gen/makefile_writer.py: Append any remaining DEFINES to LOCAL_CFLAGS (previously this was done during parsing). Add a warning for arm64 (corresponds to downstream Android.mk). platform_tools/android/gyp_gen/vars_dict_lib.py: Add OrderedSet.reset(). Add DEFINES to VarsDict. platform_tools/android/tests/expectations/: Add and update expectations files. platform_tools/android/tests/generate_user_config_tests.py: New test for generate_user_config.py platform_tools/android/tests/inputs/SkUserConfig.h: Input to the new test, so we don't have to update the expectations each time the real SkUserConfig.h changes. platform_tools/android/tests/makefile_writer_tests.py: Add a way to rebaseline test_write_local_vars, which has changed. Refactor EXPECTATIONS_DIR and compare_files into a separate file for sharing with generate_user_config_tests.py. platform_tools/android/tests/utils.py: Common code for tests. platform_tools/android/tests/var_dict_tests.py: Use a for loop to test the new key (DEFINES) and future proof this test to test any new keys in the future. BUG=skia:1975 R=djsollen@google.com, halcanary@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/198063002 git-svn-id: http://skia.googlecode.com/svn/trunk@13975 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-03-28 15:59:04 +00:00
var_dict.DEFINES.add(define)
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
def parse_gypd(var_dict, path, dest_dir, desired_targets=None):
"""Parse a gypd file.
Open a file that consists of python dictionaries representing build targets.
Parse those dictionaries using parse_dictionary. Recursively parses
referenced files.
Args:
var_dict: VarsDict object for storing the result of the parse.
path: Path to gypd file.
dest_dir: Destination for the eventual Android.mk that will be created from
this parse, relative to Skia trunk. Used to determine path for source
files and include directories.
desired_targets: List of targets to be parsed from this file. If empty,
parse all targets.
"""
d = {}
with open(path, 'r') as f:
# Read the entire file as a dictionary
d = eval(f.read())
# The gypd file is structured such that the top level dictionary has an entry
# named 'targets'
for target in d['targets']:
target_name = target['target_name']
if target_name in var_dict.KNOWN_TARGETS:
# Avoid circular dependencies
continue
if desired_targets and target_name not in desired_targets:
# Our caller does not depend on this one
continue
# Add it to our known targets so we don't parse it again
var_dict.KNOWN_TARGETS.add(target_name)
Generate tests/Android.mk from gyp gyp/apptype_console.gypi: Don't include console app dependencies when building for Android framework. gyp/tests.gyp: Add/remove libraries for framework build. platform_tools/android/bin/android_framework_gyp.py: Moved to gyp_gen. clean_up_gypd_files moved to this script. platform_tools/android/bin/gyp_to_android.py: Call new function for generating tool makefile. Set LOCAL_MODULE. platform_tools/android/gyp_gen/gypd_parser.py: Support relative paths. platform_tools/android/gyp_gen/makefile_writer.py: Factor out helper functions to be used by tool writer. LOCAL_MODULE is set elsewhere. platform_tools/android/gyp_gen/tool_makefile_writer.py: Multipurpose file for writing makefiles for tools. Should be able to use it mostly unchanged for bench, gm, etc. platform_tools/android/gyp_gen/vars_dict_lib.py: Make the comments follow the style guide. Add set(). Rename __li to __ordered_set More/update tests: platform_tools/android/tests/android_framework_gyp_tests.py platform_tools/android/tests/expectations/Android.mk platform_tools/android/tests/expectations/tool/Android.mk platform_tools/android/tests/expectations/write_local_vars_append_arm platform_tools/android/tests/expectations/write_local_vars_append_foo platform_tools/android/tests/expectations/write_local_vars_append_no_name platform_tools/android/tests/expectations/write_local_vars_no_append_arm platform_tools/android/tests/expectations/write_local_vars_no_append_foo platform_tools/android/tests/expectations/write_local_vars_no_append_no_name platform_tools/android/tests/gyp_to_android_tests.py platform_tools/android/tests/makefile_writer_tests.py platform_tools/android/tests/ordered_set_tests.py platform_tools/android/tests/test_variables.py BUG=skia:2447 May require an update to the bot to remove pyc files. R=halcanary@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/235883015 git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 16:00:30 +00:00
parse_dictionary(var_dict, target, target_name, dest_dir)