• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# This file is meant to be included into a target to provide a rule
6# to generate jni bindings for system Java-files in a consistent manner.
7#
8# To use this, create a gyp target with the following form:
9# {
10#   'target_name': 'android_jar_jni_headers',
11#   'type': 'none',
12#   'variables': {
13#     'jni_gen_package': 'chrome',
14#     'input_java_class': 'java/io/InputStream.class',
15#   },
16#   'includes': [ '../build/jar_file_jni_generator.gypi' ],
17# },
18#
19# Optional variables:
20#  input_jar_file - The input jar file, if omitted, android_sdk_jar will be used.
21
22{
23  'variables': {
24    'jni_generator': '<(DEPTH)/base/android/jni_generator/jni_generator.py',
25    # A comma separated string of include files.
26    'jni_generator_includes%': (
27        'base/android/jni_generator/jni_generator_helper.h'
28    ),
29    'native_exports%': '',
30  },
31  'actions': [
32    {
33      'action_name': 'generate_jni_headers_from_jar_file',
34      'inputs': [
35        '<(jni_generator)',
36        '<(input_jar_file)',
37        '<(android_sdk_jar)',
38      ],
39      'variables': {
40        'java_class_name': '<!(basename <(input_java_class)|sed "s/\.class//")',
41        'input_jar_file%': '<(android_sdk_jar)'
42      },
43      'outputs': [
44        '<(SHARED_INTERMEDIATE_DIR)/<(jni_gen_package)/jni/<(java_class_name)_jni.h',
45      ],
46      'action': [
47        '<(jni_generator)',
48        '-j',
49        '<(input_jar_file)',
50        '--input_file',
51        '<(input_java_class)',
52        '--output_dir',
53        '<(SHARED_INTERMEDIATE_DIR)/<(jni_gen_package)/jni',
54        '--includes',
55        '<(jni_generator_includes)',
56        '--optimize_generation',
57        '<(optimize_jni_generation)',
58        '<(native_exports)',
59      ],
60      'message': 'Generating JNI bindings from  <(input_jar_file)/<(input_java_class)',
61      'process_outputs_as_sources': 1,
62    },
63  ],
64  # This target exports a hard dependency because it generates header
65  # files.
66  'hard_dependency': 1,
67  'conditions': [
68    ['android_webview_build==1', {
69      'variables': {
70        'native_exports%': '--native_exports',
71      },
72      'dependencies': [
73        '<(DEPTH)/build/android/android_exports.gyp:android_exports',
74      ],
75    }],
76  ],
77}
78