Index: platform_tools/android/bin/android_framework_gyp.py |
diff --git a/platform_tools/android/bin/android_framework_gyp.py b/platform_tools/android/bin/android_framework_gyp.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7654492f0710f0ec1ff62c995a96cfc46d31f068 |
--- /dev/null |
+++ b/platform_tools/android/bin/android_framework_gyp.py |
@@ -0,0 +1,79 @@ |
+#!/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. |
+ |
+""" |
+Modified version of gyp_skia, used by gyp_to_android.py to generate Android.mk |
+""" |
+ |
+import os |
+import sys |
+ |
+SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) |
+ |
+# Unlike gyp_skia, this file is nested deep inside Skia. Find Skia's trunk dir. |
+# This line depends on the fact that the script is three levels deep |
+# (specifically, it is in platform_tools/android/bin). |
+SKIA_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir, |
+ os.pardir)) |
+dir_contents = os.listdir(SKIA_DIR) |
+assert 'third_party' in dir_contents and 'gyp' in dir_contents |
+ |
+# Directory within which we can find the gyp source. |
+GYP_SOURCE_DIR = os.path.join(SKIA_DIR, 'third_party', 'externals', 'gyp') |
+ |
+# Ensure we import our current gyp source's module, not any version |
+# pre-installed in your PYTHONPATH. |
+sys.path.insert(0, os.path.join(GYP_SOURCE_DIR, 'pylib')) |
+ |
+import gyp |
+ |
+def main(target_dir, target_file, skia_arch_type, have_neon): |
+ """ |
+ Create gypd files based on target_file. |
+ @param target_dir Directory containing all gyp files, including common.gypi |
+ @param target_file Gyp file to start on. Other files within target_dir will |
+ be read if target_file depends on them. |
+ @param skia_arch_type Target architecture to pass to gyp. |
+ @param have_neon Whether to generate files including neon optimizations. |
+ Only meaningful if skia_arch_type is 'arm'. |
+ @return path Path to root gypd file created by running gyp. |
+ """ |
+ # Set GYP_DEFINES for building for the android framework. |
+ gyp_defines = ('skia_android_framework=1 OS=android skia_arch_type=%s ' |
+ % skia_arch_type) |
+ if skia_arch_type == 'arm': |
+ # Always use thumb and version 7 for arm |
+ gyp_defines += 'arm_thumb=1 arm_version=7 ' |
+ if have_neon: |
+ gyp_defines += 'arm_neon=1 ' |
+ else: |
+ gyp_defines += 'arm_neon=0 ' |
+ |
+ os.environ['GYP_DEFINES'] = gyp_defines |
+ |
+ args = [] |
+ args.extend(['--depth', '.']) |
+ full_path = os.path.join(target_dir, target_file) |
+ args.extend([full_path]) |
+ # Common conditions |
+ args.extend(['-I', os.path.join(target_dir, 'common.gypi')]) |
+ # Use the debugging format. We'll use these to create one master make file. |
+ args.extend(['-f', 'gypd']) |
+ |
+ # Off we go... |
+ ret = gyp.main(args) |
+ |
+ if ret != 0: |
+ raise Exception("gyp failed!") |
+ |
+ # Running gyp should have created a gypd file, with the same name as |
+ # full_path but with a 'd' on the end. |
+ gypd_file = full_path + 'd' |
+ if not os.path.exists(gypd_file): |
+ raise Exception("gyp failed to produce gypd file!") |
+ |
+ return gypd_file |