blob: 71ab006f23cebeb4488d72af985c97f8dc2090c0 [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001# 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%': '--native_exports_optional',
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 'direct_dependent_settings': {
65 'include_dirs': [
66 '<(SHARED_INTERMEDIATE_DIR)/<(jni_gen_package)',
67 ],
68 },
69 # This target exports a hard dependency because it generates header
70 # files.
71 'hard_dependency': 1,
72}