Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: platform_tools/android/gyp_gen/generate_user_config.py

Issue 198063002: Updates to Android.mk generation. (Closed) Base URL: https://skia.googlesource.com/skia.git@android_mk
Patch Set: Add a comment explaining the motivation of OrderedSet. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « platform_tools/android/bin/gyp_to_android.py ('k') | platform_tools/android/gyp_gen/gypd_parser.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: platform_tools/android/gyp_gen/generate_user_config.py
diff --git a/platform_tools/android/gyp_gen/generate_user_config.py b/platform_tools/android/gyp_gen/generate_user_config.py
new file mode 100644
index 0000000000000000000000000000000000000000..fd99ba2ed46ba48ab755d7e81b246071609eb421
--- /dev/null
+++ b/platform_tools/android/gyp_gen/generate_user_config.py
@@ -0,0 +1,96 @@
+#!/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.
+
+"""Function for generating the SkUserConfig file, customized for Android."""
+
+import os
+
+
+AUTOGEN_WARNING = (
+"""
+///////////////////////////////////////////////////////////////////////////////
+//
+// THIS FILE IS AUTOGENERATED BY GYP_TO_ANDROID.PY. DO NOT EDIT.
+//
+// This file contains Skia's upstream include/config/SkUserConfig.h as a
+// reference, followed by the actual defines set for Android.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+"""
+)
+
+BUILD_GUARD = 'SkUserConfig_Android_DEFINED'
+
+
+def generate_user_config(original_sk_user_config, target_dir, ordered_set):
+ """Generate the SkUserConfig file specific to the Android framework.
+
+ Android needs its #defines in its skia/include/core directory, so that other
+ libraries which use Skia's headers get the right definitions. This function
+ takes the existing sample version of SkUserConfig, checked into Skia, and
+ appends the defines from ordered_set, which is expected to be a
+ vars_dict_lib.OrderedSet containing the defines. The result is written to
+ target_dir/SkUserConfig.h
+
+ Args:
+ original_sk_user_config: Path to original SkUserConfig.h
+ target_dir: Directory within which the modified SkUserConfig.h will be
+ written. Its name will be the same basename as
+ original_sk_user_config. If None, the new file will be written to the
+ working directory.
+ ordered_set: A vars_dict_lib.OrderedSet, containing a list of defines to
+ be appended to SkUserConfig.
+
+ Raises:
+ AssertionError: If original_sk_user_config does not exist.
+ """
+
+ assert os.path.exists(original_sk_user_config)
+
+ dst_filename = os.path.basename(original_sk_user_config)
+ if target_dir:
+ dst_filename = os.path.join(target_dir, dst_filename)
+
+ with open(dst_filename, 'w') as dst:
+ dst.write(AUTOGEN_WARNING)
+
+ # Copy the original exactly. This is merely for reference. Many of the
+ # defines written to the file below, either manually or generated from the
+ # gyp files, have explanations in the original SkUserConfig.h
+ with open(original_sk_user_config, 'r') as original:
+ for line in original:
+ dst.write(line)
+
+ # Now add the defines specific to Android. Write a custom build guard to
+ # ensure they don't get defined more than once.
+ dst.write('\n// Android defines:\n')
+ dst.write('#ifndef ' + BUILD_GUARD + '\n')
+ dst.write('#define ' + BUILD_GUARD + '\n')
+
+ # Add conditional defines manually:
+
+ # do this build check for other tools that still read this header
+ dst.write('#ifdef ANDROID\n')
+ dst.write('\t#include <utils/misc.h>\n')
+ dst.write('#endif\n\n')
+
+ dst.write('#if __BYTE_ORDER == __BIG_ENDIAN\n')
+ dst.write('\t#define SK_CPU_BENDIAN\n')
+ dst.write('\t#undef SK_CPU_LENDIAN\n')
+ dst.write('#else\n')
+ dst.write('\t#define SK_CPU_LENDIAN\n')
+ dst.write('\t#undef SK_CPU_BENDIAN\n')
+ dst.write('#endif\n\n')
+
+ # Now add the defines from the gyp files.
+ for item in ordered_set:
+ # Although our defines may have '=' in them, when written to the header
+ # there should be a space between the macro and what it replaces.
+ dst.write('#define ' + item.replace('=', ' ') + '\n')
+
+ dst.write('\n#endif // ' + BUILD_GUARD + '\n')
« no previous file with comments | « platform_tools/android/bin/gyp_to_android.py ('k') | platform_tools/android/gyp_gen/gypd_parser.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698